KR102151907B1 - 신뢰 실행 환경 하에서의 블록체인 데이터의 처리 및 저장 - Google Patents

신뢰 실행 환경 하에서의 블록체인 데이터의 처리 및 저장 Download PDF

Info

Publication number
KR102151907B1
KR102151907B1 KR1020197031533A KR20197031533A KR102151907B1 KR 102151907 B1 KR102151907 B1 KR 102151907B1 KR 1020197031533 A KR1020197031533 A KR 1020197031533A KR 20197031533 A KR20197031533 A KR 20197031533A KR 102151907 B1 KR102151907 B1 KR 102151907B1
Authority
KR
South Korea
Prior art keywords
hash table
blockchain
cache hash
accounts
data
Prior art date
Application number
KR1020197031533A
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 알리바바 그룹 홀딩 리미티드
Application granted granted Critical
Publication of KR102151907B1 publication Critical patent/KR102151907B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)

Abstract

신뢰 실행 환경(TEE)에서 블록체인 데이터를 처리하기 위해, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 여기에 개시된다. 이 방법 중 하나는, 블록체인 노드에 의해, 블록체인 노드에서 실행되는 TEE 내의 하나 이상의 소프트웨어 명령어의 실행 요청을 수신하는 단계; TEE 내의 가상 머신에 의해, 이 요청에 기초하여 하나 이상의 소프트웨어 명령어를 실행하기 위해 하나 이상의 블록체인 계정과 연관된 데이터를 결정하는 단계; 가상 머신에 의해, 데이터가 내부 캐시 해시 테이블에 포함되는지를 결정하기 위해 TEE에 저장된 내부 캐시 해시 테이블을 순회하는 단계; 및 데이터가 내부 캐시 해시 테이블에 포함되어 있다고 결정하는 것에 응답하여, 내부 캐시 해시 테이블로부터 데이터를 리트리빙함으로써, 하나 이상의 소프트웨어 명령어를 가상 머신에 의해 실행하는 단계를 포함한다.

Description

신뢰 실행 환경 하에서의 블록체인 데이터의 처리 및 저장
본 명세서는 신뢰 실행 환경 하에서 블록체인 데이터를 처리하고 저장하는 것에 관한 것이다.
합의 네트워크(consensus network) 및/또는 블록체인 네트워크라고도 할 수 있는 분산 원장 시스템(DLS: Distributed Ledger System)은 참여 엔티티가 데이터를 안전하게, 그리고 불변적으로 저장할 수 있게 한다. DLS는 보통 특정 사용자 사례를 참조하지 않는 블록체인 네트워크로서 일컬어진다. 블록체인 네트워크 유형의 예로는 퍼블릭 블록체인 네트워크, 프라이빗 블록체인 네트워크 및 컨소시엄 블록체인 네트워크가 있다. 컨소시엄 블록체인 네트워크는 합의 과정을 제어하고 액세스 제어층을 포함하는 엔티티의 선택 그룹에 제공된다.
블록체인 네트워크는 이더리움(Ethereum)과 같은 분산 컴퓨팅 플랫폼에서 작동할 수 있다. 이더리움 블록체인은 거래 기반의 상태 머신으로 볼 수 있다. 이더리움은 월드 상태(world state)라고 지칭되는 전반적인 "분산 상태"를 가질 수 있다. 이더리움의 월드 상태는 이더리움 계정에 의해 형성된 개체를 포함할 수 있다. 각 계정은 상태와 해당 주소를 가질 수 있다. 월드 상태는 계정 주소와 계정 상태 간의 매핑으로 구성된다. 매핑은 MPT(Merkle Patricia Tree)라는 데이터 구조에 저장된다.
몇몇 경우에, 블록체인 네트워크의 노드 및/또는 블록체인 네트워크와 통신하는 노드는 신뢰 실행 환경(TEE: Trusted Execution Environment)을 사용하여 운영할 수 있다. TEE는 하드웨어의 운영 환경(예컨대, OS(Operating System), BIOS(Basic Input/Output System))으로부터 분리된 하드웨어(하나 이상의 프로세서, 메모리) 내에 엔클레이브(enclave) 신뢰 컴퓨팅 베이스(TCB: Trusted Computing Base)를 포함할 수 있다. TCB에는 이더리움 가상 머신(EVM: Ethereum Virtual Machine)이 포함되어 엔클레이브 외부의 애플리케이션으로부터의 호출(call)을 처리할 수 있다. 몇몇 경우에, TCB 외부에 저장된 하나 이상의 월드 상태 MPT의 값은 TCB 내의 호출을 처리하기 위해 EVM에 의해 리트리빙(retrieve)된다. 처리 후, 호출의 처리 결과는 TCB로부터 출력되어 월드 상태 MPT를 업데이트한다. 신뢰 환경과 비신뢰 환경 간에 데이터를 전송하는 데이터 처리는 추가의 컴퓨팅 자원을 소비하고 데이터 처리 효율성을 저하시킬 수 있다. 컴퓨팅 자원 소비를 줄이고 데이터 처리 효율성을 향상시키기 위해, 신뢰 환경과 비신뢰 환경 간의 데이터 트래픽을 줄이도록 TCB에 저장된 데이터에 기초하여 호출을 적어도 부분적으로 처리하는 것이 바람직하다.
본 명세서는 블록체인 데이터를 처리하고 저장하는 기술을 설명한다. 이들 기술은 일반적으로 블록체인 노드에서 실행되는 신뢰 실행 환경(TEE: Trusted Execution Environment) 내의 하나 이상의 소프트웨어 명령어의 실행 요청을 수신하는 단계; 이 요청에 기초하여 하나 이상의 소프트웨어 명령어를 실행하기 위해 하나 이상의 블록체인 계정과 연관된 데이터를 결정하는 단계; 그 데이터가 내부 캐시 해시 테이블에 포함되는지를 결정하기 위해 TEE에 저장된 내부 캐시 해시 테이블을 순회하는(traverse) 단계; 및 데이터가 내부 캐시 해시 테이블에 포함되어 있다고 결정한 것에 응답하여, 내부 캐시 해시 테이블로부터 데이터를 리트리빙함으로써 하나 이상의 소프트웨어 명령어를 실행하는 단계를 포함한다.
본 명세서는 또한 하나 이상의 프로세서에 결합되어, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서가 여기에 제공된 방법의 실시예에 따라 작동을 수행하게 하는 명령어를 저장하는 하나 이상의 컴퓨터 판독 가능 비일시적(non-transitory) 저장 매체를 제공한다.
본 명세서는 여기에 제공된 방법을 구현하기 위한 시스템을 추가로 제공한다. 시스템은 하나 이상의 프로세서와, 하나 이상의 프로세서에 결합되어, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서가 여기에 제공된 방법의 실시예에 따라 작동을 수행하게 하는 명령어를 저장하는 컴퓨터 판독 가능 저장 매체를 포함한다.
본 명세서에 따른 방법은 여기에 설명된 양태 및 특징의 임의의 조합이 포함될 수 있다는 것으로 이해된다. 즉, 본 명세서에 따른 방법은 여기에 구체적으로 설명된 양태 및 특징의 조합으로 제한되지 않으며, 제공된 양태 및 특징의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 실시예의 상세는 첨부 도면 및 이하의 상세한 설명에서 개진된다. 본 명세서의 다른 특징 및 장점은 상세한 설명과 도면 및 특허 청구 범위로부터 명백해질 것이다.
도 1은 본 명세서의 실시예를 실행하기 위해 사용될 수 있는 환경의 예를 나타내는 도면이다.
도 2는 본 명세서의 실시예에 따른 아키텍처의 일 예를 나타내는 도면이다.
도 3은 본 명세서의 실시예에 따른 신뢰 실행 환경(trusted execution environment; TEE)의 구조 및 TEE 외부의 저장부의 예를 나타내는 도면이다.
도 4는 본 명세서의 실시예에 따라 블록체인 데이터를 처리하고 저장하기 위한 프로세스의 예의 흐름도이다.
도 5는 본 명세서의 실시예에 따른 장치 모듈의 예를 도시한다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
본 명세서는 블록체인 데이터를 처리하고 저장하는 기술을 설명하다. 이들 기술은 일반적으로 블록체인 노드에서 실행되는 신뢰 실행 환경(TEE: Trusted Execution Environment) 내의 하나 이상의 소프트웨어 명령어의 실행 요청을 수신하는 단계; 이 요청에 기초하여 하나 이상의 소프트웨어 명령어를 실행하기 위해 하나 이상의 블록체인 계정과 연관된 데이터를 결정하는 단계; 그 데이터가 내부 캐시 해시 테이블에 포함되는지를 결정하기 위해 TEE에 저장된 내부 캐시 해시 테이블을 순회하는 단계; 및 데이터가 내부 캐시 해시 테이블에 포함되어 있다고 결정한 것에 응답하여, 내부 캐시 해시 테이블로부터 데이터를 리트리빙함으로써 하나 이상의 소프트웨어 명령어를 실행하는 단계를 포함한다.
상술한 바와 같이, 본 명세서의 실시예들에 대한 추가 컨텍스트를 제공하기 위해, 합의 네트워크(예컨대, 피어 투 피어 노드로 구성됨) 및 블록체인 네트워크로 지칭될 수 있는 분산 원장 시스템(DLS: Distributed Ledger System)은 참여 엔티티가 안전하게 불변적으로 거래를 수행하고 데이터를 저장할 수 있게 한다. 블록체인이라는 용어는 일반적으로 특정 네트워크 및/또는 사용 사례와 연관되어 있지만, 블록체인은 일반적으로 특정 사용 사례를 참조하지 않는 DLS를 지칭하는 데 사용된다.
블록체인은 거래를 변경할 수 없는 방식으로 거래를 저장하는 데이터 구조이다. 따라서 블록체인에 기록된 거래는 믿을 수 있고 신뢰할 수 있다. 블록체인은 하나 이상의 블록을 포함한다. 체인 내의 각 블록은 이전 블록의 암호화 해시를 포함시켜 체인 내의 바로 앞에 있는 직전 블록에 링크된다. 각 블록에는 타임 스탬프, 자체 암호화 해시 및 하나 이상의 거래도 포함된다. 블록체인 네트워크의 노드에 의해 이미 검증된 거래는 해시되어 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프 노드(leaf node)에서 데이터가 해시되고, 트리의 각 분기 내의 모든 해시가 분기의 루트에 연결되는 데이터 구조이다. 이 프로세스는 트리 내의 모든 데이터를 대표하는 해시를 저장하는 트리의 전체 루트까지 계속된다. 트리 내에 저장된 거래로 간주되는 해시는 트리 구조와 일치하는 지 여부를 판단하여 신속하게 검증할 수 있다.
블록체인은 거래를 저장하기 위한 (적어도 부분적으로) 분산된 데이터 구조인 반면, 블록체인 네트워크는 브로드캐스트, 거래 확인 및 유효성 검사 등을 통해 하나 이상의 블록체인을 관리, 업데이트 및 유지 관리하는 컴퓨팅 노드의 네트워크이다. 상술한 바와 같이, 블록체인 네트워크는 퍼블릭 블록체인 네트워크, 프라이빗 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로 제공될 수 있다. 본 명세서의 실시예는 컨소시엄 블록체인 네트워크를 참조하여 여기에서 더 상세히 설명된다. 그러나, 본 명세서의 실시예는 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 생각된다.
일반적으로 컨소시엄 블록체인 네트워크는 참여 엔티티 사이에서 비공개이다. 컨소시엄 블록체인 네트워크에서, 합의 프로세스는 각각의 엔티티(예컨대, 금융 기관, 보험 회사)가 운영하는 하나 이상의 합의 노드라고 지칭될 수 있는 승인된 노드 집합에 의해 제어된다. 예를 들어, 10개의 엔티티(예컨대, 금융 기관, 보험 회사)로 구성된 컨소시엄은 컨소시엄 블록체인 네트워크를 운영할 수 있고, 각각의 컨소시엄은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 운영할 수 있다.
일부 예에서, 글로벌 블록체인은, 컨소시엄 블록체인 네트워크 내에서, 모든 노드에 걸쳐 복제되는 블록체인으로 제공된다. 즉, 모든 합의 노드는 글로벌 블록체인과 관련하여 완벽한 상태 합의에 있다. 합의(예컨대, 블록체인에의 블록 추가에 대한 합의)를 달성하기 위해, 합의 프로토콜은 컨소시엄 블록체인 네트워크 내에서 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는, 이하에 더 상세하게 설명된 바와 같이, PBFT(Practical Byzantine Fault Tolerance) 합의를 구현할 수 있다.
도 1은 본 명세서의 실시예를 실행하기 위해 사용될 수 있는 환경(100)의 예를 나타내는 도면이다. 일부 예에서, 환경(100)은 엔티티가 컨소시엄 블록체인 네트워크(102)에 참여할 수 있게 한다. 환경(100)은 컴퓨팅 디바이스(106, 108) 및 네트워크(110)를 포함한다. 일부 예에서, 네트워크(110)는 LAN(Local Area Network), WAN(Wide Area Network), 인터넷 또는 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스(예컨대, 컴퓨팅 디바이스) 및 백엔드 시스템(back-end system)을 연결한다. 일부 예에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 일부 예에서, 네트워크(110)는 컨소시엄 블록체인 네트워크(102)와의 통신 및 컨소시엄 블록체인 네트워크 내에서의 통신을 가능하게 한다. 일반적으로, 네트워크(110)는 하나 이상의 통신 네트워크를 나타낸다. 몇몇 경우에, 컴퓨팅 디바이스(106, 108)는 클라우드 컴퓨팅 시스템(도시하지 않음)의 노드일 수 있거나, 또는 각각의 컴퓨팅 디바이스(106, 108)는 네트워크에 의해 상호 연결되어 분산 처리 시스템으로서 기능하는 다수의 컴퓨터를 포함하는 별도의 클라우드 컴퓨팅 시스템일 수 있다.
도시된 예에서, 컴퓨팅 시스템(106, 108)은 컨소시엄 블록체인 네트워크(102) 내의 노드로서 참여할 수 있는 임의의 적절한 컴퓨팅 시스템을 각각 포함할 수 있다. 컴퓨팅 디바이스의 예는 서버, 데스크탑 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스 및 스마트 폰을 포함하지만, 이것으로 제한되지는 않는다. 일부 예에서, 컴퓨팅 시스템(106, 108)은 컨소시엄 블록체인 네트워크(102)와 상호 작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제 1 엔티티(예컨대, 사용자 A)가 하나 이상의 다른 엔티티(예컨대, 다른 사용자)와의 거래를 관리하기 위해 사용하는 거래 관리 시스템과 같은 제 1 엔티티의 컴퓨터 구현 서비스를 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제 2 엔티티(예컨대, 사용자 B)가 하나 이상의 다른 엔티티(예컨대, 다른 사용자)와의 거래를 관리하기 위해 사용하는 거래 관리 시스템과 같은 제 2 엔티티의 컴퓨터 구현 서비스를 호스팅할 수 있다. 도 1의 예에서, 컨소시엄 블록체인 네트워크(102)는 노드의 피어 투 피어 네트워크(peer-to-peer network)로 표현되고, 컴퓨팅 시스템(106, 108)은, 각각, 컨소시엄 블록체인 네트워크(102)에 참여하는 제 1 엔티티 및 제 2 엔티티의 노드를 제공한다.
도 2는 본 명세서의 실시예에 따른 아키텍처(200)의 일 예를 나타낸다. 아키텍처(200)는 엔티티 계층(202), 호스팅된 서비스 계층(204) 및 블록체인 네트워크 계층(206)을 포함한다. 도시된 예에서, 엔티티 계층(202)은 3명의 참여자, 참여자 A, 참여자 B 및 참여자 C를 포함하며, 각 참여자는 각각의 거래 관리 시스템(208)을 갖는다.
도시된 예에서, 호스팅된 서비스 계층(204)은 각각의 거래 관리 시스템(208)에 대한 인터페이스(210)를 포함한다. 일부 예에서, 각각의 거래 관리 시스템(208)은 프로토콜(예컨대, HTTPS(Hypertext Transfer Protocol Secure))을 사용하여 네트워크(예컨대, 도 1의 네트워크(110))를 통해 각각의 인터페이스(210)와 통신한다. 일부 예에서, 각각의 인터페이스(210)는 각각의 거래 관리 시스템(208)과 블록체인 네트워크 계층(206) 사이의 통신 연결을 제공한다. 보다 구체적으로, 인터페이스(210)는 블록체인 네트워크 계층(206)의 블록체인 네트워크(212)와 통신한다. 일부 예에서, 인터페이스(210)와 블록체인 네트워크 계층(206) 사이의 통신은 원격 프로시저 호출(RPC: Remote Procedure Call)을 사용하여 수행된다. 일부 예에서, 인터페이스(210)는 각각의 거래 관리 시스템(208)에 대한 블록체인 네트워크 노드를 "호스팅"한다. 예를 들어, 인터페이스(210)는 블록체인 네트워크(212)에 액세스하기 위한 API(Application Programming Interface)를 제공한다.
본 명세서에 설명된 바와 같이, 블록체인 네트워크(212)는 블록체인(216)에 정보를 불변적으로 기록하는 복수의 노드(214)를 포함하는 피어 투 피어 네트워크로서 제공된다. 단일 블록체인(216)만이 도식적으로 묘사되어 있지만, 다수의 블록체인(216)이 제공되고, 블록체인 네트워크(212)를 통해 유지된다. 예를 들어, 각 노드(214)는 하나의 블록체인을 저장한다. 일부 실시예에서, 블록체인(216)에는 컨소시엄 블록체인 네트워크에 참여하는 둘 이상의 엔티티 사이에서 수행되는 거래와 연관된 정보가 저장된다.
블록체인(예컨대, 도 2의 블록체인(216))은 블록의 체인으로 구성되며, 각 블록은 데이터를 저장한다. 데이터의 예로는 둘 이상의 참여자 간의 거래를 대표하는 거래 데이터가 있다. 본 명세서에서 거래가 비제한적인 예로서 사용되지만, 임의의 적절한 데이터가 블록체인(예컨대, 문서, 이미지, 비디오, 오디오)에 저장될 수 있는 것으로 고려된다. 거래의 예로는 가치있는 것(예컨대: 자산, 제품, 서비스, 통화)의 교환이 제한없이 포함될 수 있다. 거래 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 거래 데이터는 변경될 수 없다.
블록에 저장하기 전에, 거래 데이터가 해시된다. 해싱은 거래 데이터(문자열 데이터로 제공됨)를 고정 길이 해시값(문자열 데이터로도 제공됨)으로 변환하는 프로세스이다. 거래 데이터를 획득하기 위해 해시값을 해제하는 것은 불가능하다. 해싱은 거래 데이터를 약간만 변경해도 완전히 다른 해시값을 얻을 수 있게 한다. 또한, 전술한 바와 같이, 해시값은 고정 길이이다. 즉, 거래 데이터의 크기에 관계없이 해시값의 길이는 고정되어 있다. 해싱은, 해시값을 생성하기 위해, 해시 함수를 통해 거래 데이터를 처리하는 것이 포함된다. 해시 함수의 예로는 256비트 해시값을 출력하는 보안 해시 알고리즘 (SHA)-256이 있지만, 이것으로 한정되는 것은 아니다.
여러 거래의 거래 데이터는 해시되어 블록에 저장된다. 예를 들어, 2개의 거래의 해시값이 제공되며, 그들 자신은 또 다른 해시를 제공하기 위해 해시된다. 블록에 저장되는 모든 거래에 대해, 단일 해시값이 제공될 때까지 이 프로세스가 반복된다. 이 해시값은 머클 루트 해시(Merkle root hash)라고 지칭되며 블록의 헤더에 저장된다. 임의의 거래가 변경되면, 그 해시값이 변경되고 결과적으로 머클 루트 해시가 변경된다.
블록은 합의 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 여러 노드는 합의 프로토콜에 참여하고, 블록체인에 블록을 추가하기 위한 작업을 수행한다. 이러한 노드를 합의 노드라고 한다. 위에서 소개된 PBFT는 합의 프로토콜의 비제한적인 예로서 사용된다. 합의 노드는 합의 프로토콜을 실행하여, 거래를 블록체인에 추가하고, 블록체인 네트워크의 전체 상태를 업데이트한다.
더 상세히 설명하면, 합의 노드는 블록 헤더를 생성하고, 블록의 모든 거래를 해시하고, 해시값을 쌍으로 결합하여, 블록의 모든 거래에 대해 단일 해시값이 제공될 때까지, 추가 해시값을 생성한다(머클 루트 해시). 이 해시는 블록 헤더에 추가된다. 합의 노드는, 또한, 블록체인에서 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시값을 결정한다. 합의 노드는, 또한, 논스값(nonce value)과 타임 스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 오류(Byzantine fault)(예컨대: 오작동 노드, 악성 노드)를 허용하는 실용적인 비잔틴 상태 머신 복제(Byzantine state machine replication)를 제공한다. 이는 오류가 발생할 것으로 가정하여(예컨대, 독립적인 노드 오류의 존재 및/또는 합의 노드에 의해 전송된 조작 메시지를 가정하여) PBFT에서 달성된다. PBFT에서, 합의 노드는 기본 합의 노드와 백업 합의 노드를 포함하는 순서로 제공된다. 기본 합의 노드가 주기적으로 변경되고, 블록체인 네트워크의 월드 상태(world state)에 대한 합의에 도달하는 블록체인 네트워크 내의 모든 합의 노드에 의해 거래가 블록체인에 추가된다. 이 프로세스에서, 메시지는 합의 노드간에 전송되며, 각 합의 노드는 특정 피어 노드로부터 메시지가 수신되었음을 증명하고, 전송 중에 메시지가 수정되지 않았음을 확인한다.
PBFT에서, 컨센서스 프로토콜은 모든 합의 노드가 동일한 상태에서 시작하여 여러 단계로 제공된다. 시작하기 위해, 클라이언트는 (예컨대, 블록체인 네트워크 내에서 거래를 실행하는) 서비스 동작을 인보크하기 위해 요청을 기본 합의 노드로 전송한다. 요청을 수신하는 것에 응답하여, 기본 합의 노드는 요청을 백업 합의 노드로 멀티캐스팅한다. 백업 합의 노드가 요청을 실행하고, 각각은 클라이언트에 응답을 전송한다. 클라이언트는 임계값의 응답이 수신될 때까지 대기한다. 일부 예에서, 클라이언트는 f+1개의 응답이 수신되기를 기다리고, 여기서, f는 블록체인 네트워크 내에서 허용될 수 있는 결함 합의 노드의 최대 수이다. 최종 결과는 충분한 수의 합의 노드가 블록체인에 추가될 기록의 순서에 동의하고, 기록이 수용되거나 거부되는 것이다.
일부 블록체인 네트워크에서, 암호화는 거래의 프라이버시를 유지하기 위해 구현된다. 예를 들어, 블록체인 네트워크 내의 다른 노드가 거래의 상세를 알 수 없도록, 두 노드가 거래를 비공개로 유지하고자 하는 경우, 노드는 거래 데이터를 암호화할 수 있다. 암호화의 예로는 대칭 암호화 및 비대칭 암호화를 들 수 있고 이것으로 한정되는 것은 아니다. 대칭 암호화는 암호화(평문에서 암호문 생성)와 복호화(암호문에서 평문 생성) 양쪽에 대해 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 여러 노드에서 동일한 키를 사용할 수 있으므로, 각 노드는 거래 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 각각 개인 키와 공개 키를 포함하는 키 쌍을 사용하고, 여기서, 개인 키는 각각의 노드에만 알려져 있고, 공개 키는 블록체인 네트워크 내의 임의 또는 모든 다른 노드에 알려져 있다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있고, 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화할 수 있다. 예를 들어, 다시 도 2를 참조하면, 참여자 A는 참여자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참여자 B에게 전송할 수 있다. 참여자 B는 개인 키를 사용하여 암호화된 데이터(암호문)를 복호화하여 원본 데이터(평문)를 추출할 수 있다. 노드의 공개 키로 암호화된 메시지는 노드의 개인 키를 통해서만 복호화될 수 있다.
비대칭 암호화는 거래의 참여자가 거래의 다른 참여자를 확인할 수 있는 디지털 시그너처뿐만 아니라, 거래의 유효성을 제공하는 데 사용된다. 예를 들어, 노드는 메시지에 디지털 서명을 할 수 있고, 다른 노드는 참여자 A의 디지털 시그너처에 기초하여 노드에 의해 메시지가 전송되었음을 확인할 수 있다. 디지털 시그너처는 메시지가 전송 중에 변조되지 않도록 하기 위해 사용될 수도 있다. 예를 들어, 다시 도 2를 참조하면, 참여자 A는 참여자 B에게 메시지를 전송하는 것이다. 참여자 A는 메시지의 해시를 생성한 다음, 그것의 개인 키를 사용해 해시를 암호화하여 디지털 시그너처를 암호화된 해시로서 제공한다. 참여자 A는 메시지에 디지털 시그너처를 추가하고, 디지털 서명된 메시지를 참여자 B에게 전송한다. 참여자 B는 참여자 A의 공개 키를 사용하여 디지털 시그너처를 복호화하고 해시를 추출한다. 참여자 B는 메시지를 해시하고 그 해시를 비교한다. 해시가 동일하면, 참여자 B는 메시지가 실제로 참여자 A로부터 왔으며, 그 메시지가 변조되지 않았음을 확인할 수 있다.
일부 실시예에서, 블록체인 네트워크의 노드 및/또는 블록체인 네트워크와 통신하는 노드는 TEE(Trusted Execution Environment)를 사용하여 작동할 수 있다. 하이 레벨에서, TEE는 하드웨어 운영 환경(예컨대, OS(Operating System), BIOS(Basic Input/Output System))과 분리된 하드웨어(하나 이상의 프로세서, 메모리) 내의 신뢰 환경이다. 더욱 상세하게, TEE는 코드 실행의 기밀성 및 무결성과, 메인 프로세서 내에서 로딩된 데이터를 보장하는 프로세서의 개별적이고 안전한 영역이다. 프로세서 내에서, TEE는 OS와 병렬로 실행된다. 소위 신뢰 애플리케이션(TA: Trusted Application)의 적어도 일부는 TEE 내에서 실행되고, 프로세서와 메모리에 액세스한다. TEE를 통해, TA는 메인 OS에서 실행되는 다른 애플리케이션으로부터 보호된다. 또한, TEE는 TEE 내에서 TA를 상호 암호화된 방식으로 분리한다.
TEE의 예로는 미국 캘리포니아주 산타클라라 소재의 Intel Corporation에 의해 제공되는 SGX(Software Guard Extensions)를 들 수 있다. SGX가 여기에서 예로서 논의되었지만, 본 명세서의 실시예는 임의의 적절한 TEE를 사용하여 실현될 수 있는 것으로 고려된다.
SGX는 하드웨어 기반 TEE를 제공한다. SGX에서, 신뢰 하드웨어는 CPU의 다이(die)이며, 선택된 코드와 데이터를 보호하기 위해 물리적 메모리의 일부가 분리된다. 메모리의 분리된 부분을 엔클레이브(enclave)라고 한다. 보다 구체적으로, 엔클레이브는 메모리에서 EPC(Enclave Page Cache)로서 제공되고, 애플리케이션 주소 공간에 매핑된다. 메모리(예컨대, DRAM)는 SGX에 대한 보존된 랜덤 메모리(PRM: Preserved Random Memory)를 포함한다. PRM은 최저 BIOS 레벨의 연속적인 메모리 공간이며 어떤 소프트웨어로도 액세스할 수 없다. 각각의 EPC는 PRM에 애플리케이션 데이터 및 코드를 로딩하기 위해 OS에 의해 할당되는 메모리 세트(예컨대, 4KB)이다. EPCM(Enclave Page Cache Metadata)는 각각의 EPC에 대한 시작 주소이고, 각 EPC는 하나의 엔클레이브에 의해서만 공유될 수 있도록 보장한다. 즉, 단일 엔클레이브는 복수의 EPC를 사용할 수 있는 반면, EPC는 단일 엔클레이브에 전용된다.
TA를 실행하는 동안, 프로세서는, 엔클레이브에 저장된 데이터에 액세싱할 때, 소위 엔클레이브 모드로 작동한다. 엔클레이브 모드에서의 작동은 각 메모리 액세스에 대해 추가의 하드웨어 검사를 수행한다. SGX에서 TA는 신뢰 부분과 비신뢰 부분으로 컴파일된다. 예를 들어, OS, BIOS, 권한있는 시스템 코드, VMM(Virtual Machine Manager), SMM(System Management Mode) 등과 같은 신뢰 부분은 액세스할 수 없다. 작동 시, TA는 메모리의 PRM 내에서 엔클레이브를 실행하고 생성한다. 엔클레이브 내의 신뢰 부분에 의해 실행되는 신뢰 기능은 비신뢰 부분에 의해 호출되고, 엔클레이브 내에서 실행되는 코드는 데이터를 (암호화되지 않은) 평문 데이터로 보아 데이터에 대한 외부 액세스는 거부된다.
일부 실시예에서, 엔클레이브 TCB의 내부에서 작동하는 가상 머신은 애플리케이션이 스마트 계약(smart contract)을 안전하게 실행하도록 신뢰 런타임 환경을 제공할 수 있다. 가상 머신은 엔클레이브 외부에서 애플리케이션으로부터의 호출을 수신할 수 있다. 호출은 엔클레이브 인터페이스 기능을 인보크시켜서 스마트 계약의 실행을 시작할 수 있다. 스마트 계약 실행 동안, 가상 머신은 호출의 입력 파라미터 또는 스마트 계약의 내용에 기초하여 블록체인 계정과 연관된 데이터를 리트리빙할 수 있다. 블록체인 계정으로부터의 데이터로는 계정 잔고(account balance) 또는 계정의 저장 내용(예컨대, 계정 변수)과 같은 블록체인 계정 상태가 포함될 수 있다.
몇몇 경우에, 자주 액세스되는 계정 데이터나 액세스될 가능성이 있는 계정 데이터는 엔클레이브 내부의 내부 캐시 해시 테이블에 평문으로 저장될 수 있다. 스마트 계약을 실행하기 위해 계정 데이터를 리트리빙할 때, 가상 머신은 먼저 내부 캐시 해시 테이블을 순회하여 데이터의 위치를 찾을 수 있다. 내부 캐시 해시 테이블을 순회한 후 데이터를 찾을 수 없는 경우, 직접 메모리 액세스를 통해 캐시 저장부에 저장된 외부 캐시 해시 테이블을 순회하기 위해 엔클레이브 외부로 호출할 수 있다. 외부 캐시 해시 테이블은 자주 액세스되는 계정의 계정 정보를 저장할 수 있다. 외부 캐시 해시 테이블을 리트리빙한 후 계정 데이터를 찾을 수 없는 경우, 데이터베이스에 저장된 블록체인의 글로벌 상태에 대응하는 MPT(Merkle Patricia Tree)로부터 계정 데이터를 리트리빙하도록 호출할 수 있다.
도 3은 본 명세서의 실시예에 따른 TEE의 구조(300) 및 TEE 외부의 저장부의 예를 나타내는 도면이다. 하이 레벨에서, 구조(300)는 가상 머신(304) 및 내부 캐시 해시 테이블(308)을 저장하는 엔클레이브 TCB(또는 단지 TCB라고 함)(302) 형태의 TEE와, 외부 캐시 해시 테이블(310) 및 데이터베이스(320)에 저장된 MPT 형태의 월드 상태(314)를 포함한다.
전술한 바와 같이, SGX 가능 애플리케이션과 같은 TA는 신뢰 구성 요소(또는 엔클레이브 구성 요소) 및 비신뢰 구성 요소(애플리케이션 구성 요소)를 포함할 수 있다. 애플리케이션 구성 요소는 엔클레이브의 외부에 위치하고, 엔클레이브 인터페이스 기능을 통해 TCB(302)에 액세스할 수 있다. 일부 실시예에서, 엔클레이브는 애플리케이션 구성 요소가 이를 호출할 수 있도록 API(Application Programming Interface)를 노출시킬 수 있다. 애플리케이션 구성 요소는 API를 사용하여 엔클레이브에서 가상 머신(304)을 인보크하여 스마트 계약을 실행하도록 "ecall"(306)을 생성할 수 있다. 가상 머신은 컴퓨터 시스템의 에뮬레이션(emulation)일 수 있다. 예를 들어, 가상 머신은 이더리움 블록체인의 맥락에서 EVM(Ethereum Virtual Machine)일 수 있다. 다른 블록체인 네트워크는 다른 변형의 가상 머신을 사용할 수 있음을 이해해야 한다. ecall(306)을 수신한 후, 가상 머신(304)은 스마트 계약의 실행에 관한 하나 이상의 블록체인 계정을 식별할 수 있다. 식별은 ecall(306)의 하나 이상의 입력 파라미터 또는 스마트 계약의 내용에 기초될 수 있다. 예를 들어, ecall(306)은 2개의 블록체인 계정 사이에 새로운 거래를 블록체인에 추가하는 스마트 계약을 실행하기 위해 애플리케이션 구성 요소에 의해 이루어질 수 있다. 가상 머신(304)은 대응하는 계정 상태로부터 계정 잔고를 리트리빙하기 위해 키(즉, 계정 주소)를 식별할 수 있다.
스마트 계약을 실행하는 데 사용될 계정 데이터를 식별한 후, 가상 머신(304)은 내부 캐시 해시 테이블(308)을 순회하여 계정 데이터를 찾을 수 있다. 일부 실시예에서, 자주 액세스되는 계정 데이터나 액세스될 가능성이 있는 데이터는 TCB(302) 내의 내부 캐시 해시 테이블(308)에 저장될 수 있다. 내부 캐시 해시 테이블(308)은 데이터에 대응하는 KVP를 저장하는 2차원(2D) 테이블일 수 있다. 내부 캐시 해시 테이블(308)에 저장된 데이터는 스마트 계약을 실행하기 위해 가상 머신(304)에 의해 리트리빙될 가능성이 가장 큰 데이터일 수 있다. 가능성은 과거 또는 예측된 계정 액세스 빈도에 기초하여 추정될 수 있다. 일부 예에서, 자주 액세스되는 계정 데이터는 사전 결정된 횟수 또는 사전 결정된 기간 동안 가상 머신(304)에 의해 리트리빙된 데이터일 수 있다. 일부 예에서, 액세스될 가능성이 있는 데이터는 현재 실행되는 스마트 계약에 관한 스마트 계약을 실행하기 위해 이전에 리트리빙된 데이터일 수 있다.
내부 캐시 해시 테이블(308) 내의 데이터의 대응하는 KVP는 블록체인의 월드 상태(314)의 MPT로부터 리트리빙될 수 있다. 이로써, 가상 머신(304)이 스마트 계약을 실행하기 위해 내부 캐시 해시 테이블로부터 계정 데이터의 적어도 일부를 리트리빙할 가능성이 증가한다. 이에 따라, 가상 머신(304)이 TCB(302)의 외부로부터 계정 데이터를 리트리빙해야 할 가능성이 감소한다.
월드 상태(314)는 때때로 글로벌 상태로 지칭될 수 있다. 각 블록체인 네트워크는 하나의 글로벌 상태를 가질 수 있다. 글로벌 상태는 계정 주소와 블록체인의 계정 상태 사이의 매핑을 포함할 수 있다. 각 블록체인 계정은 글로벌 상태의 객체이다. 상술한 바와 같이, 글로벌 상태 매핑은 MPT로 알려진 데이터 구조에 저장될 수 있다. 계정 주소와 계정 상태는 MPT에 KVP로 저장될 수 있다. 글로벌 상태 MPT는 주어진 시점에서의 글로벌 상태의 해시이다. 글로벌 상태는 MPT에 대한 안전하고 고유한 식별자로 사용되는 루트 노드를 포함할 수 있다. 글로벌 상태 MPT의 루트 노드는 암호화 방식으로 계정 상태를 나타내는 데이터에 의존할 수 있다.
도 3에 도시된 구조(300)에서, 각각, 계정 상태 0(316) 및 계정 상태 1(318)을 갖는 2개의 계정이 월드 상태(314) 아래에 도시되어 있다. 블록체인 네트워크가 2개 초과의 계정을 포함할 수 있음을 이해해야 한다. 블록체인 계정은 외부 소유 계정과 계약 계정일 수 있다. 외부 소유 계정은 개인 키로 제어할 수 있고 어떤 코드와도 연관되지 않는다. 계약 계정은 그들의 계약 코드로 제어할 수 있고, 그들과 연관된 코드를 가질 수 있다.
일부 실시예에서, 계정 상태로는 논스(nonce), 잔고(balance), codeHash 및 storageRoot로 알려진 4개의 구성 요소를 들 수 있다. 계정이 외부 소유 계정인 경우, 논스는 계정 주소로부터 전송된 거래의 수를 나타낼 수 있다. 잔고는 계정이 소유한 디지털 자산을 나타낼 수 있다. codeHash는 빈 문자열의 해시이다. storageRoot는 비어 있다. 계정이 계약 계정인 경우, 논스는 계정에 의해 생성된 계약의 수를 나타낼 수 있다. 잔고는 계정이 소유한 디지털 자산을 나타낼 수 있다. codeHash는 계정과 연관된 가상 머신 코드의 해시일 수 있다. storageRoot는 스토리지 트리로 지칭되는 MPT의 루트 노드의 해시를 저장할 수 있다. 스토리지 트리는 계정의 저장 내용의 해시를 인코딩하여 계약 데이터를 저장할 수 있다. 스토리지 트리는 MPT의 데이터 구조도 갖기 때문에, 계약 데이터나 변수를 저장하는 하나 이상의 분기 노드와 리프 노드를 포함할 수 있다.
내부 캐시 해시 테이블(308)을 순회한 후에, 가상 머신(304)이 계정 데이터를 찾을 수 없다면, TCB(302) 외부로부터 데이터를 찾기 위해 호출(312)할 수 있다. 엔클레이브 내에서 외부 애플리케이션 구성 요소로의 호출 생성은 ocall(312)로 지칭될 수 있다. 일부 실시예에서, ocall(312)은 엔클레이브 외부의 캐시 메모리에 저장된 외부 캐시 해시 테이블(310)로부터 데이터를 리트리빙하게 할 수 있다. 외부 캐시 해시 테이블(310)은 자주 액세스되는 계정 또는 액세스될 가능성이 있는 계정의 데이터를 저장하는 2D 테이블일 수 있다. 계정의 데이터는 계정 상태(즉, 논스, 잔고, codeHash 등) 및 스토리지 트리로서 저장된 저장 내용을 포함할 수 있다. 외부 캐시 해시 테이블(310)은 계정 상태 및 자주 액세스되는 계정의 저장 내용에 대응하는 KVP를 저장할 수 있다. 외부 캐시 해시 테이블(310)에 저장된 대응하는 KVP는 월드 상태(314)로부터 리트리빙될 수 있다. 일부 예에서, 외부 캐시 해시 테이블(310)은 직접 메모리 액세스를 통해 엔클레이브로부터 액세스될 수 있다.
가상 머신(304)이 외부 캐시 해시 테이블(310)을 순회한 후에 계정 데이터를 찾을 수 없는 경우, 가상 머신은 데이터베이스(320)에 저장된 월드 상태(314)를 순회하여 계정 데이터를 찾을 수 있다. 일부 예에서, 데이터베이스(320)는 RocksDB 또는 LevelDB와 같은 KVP용 데이터베이스일 수 있다.
스마트 계약을 실행하기 위해 계정 데이터를 사용한 후, 실행 결과는 월드 상태(314)를 업데이트하기 위해 사용될 수 있다. 사용된 계정 데이터가 내부 캐시 해시 테이블(308)에 저장된 경우, 업데이트된 계정 데이터에 대응하는 KVP는 우선 외부 캐시 해시 테이블(310) 내의 대응하는 KVP와 캐시 동기화될 수 있다. 이후, 외부 캐시 해시 테이블(310)은 대응하는 KVP를 데이터베이스(320)와 캐시 동기화하여 월드 상태(314) MPT에서 업데이트할 수 있다. 사용된 계정 데이터가 외부 캐시 해시 테이블(310)에 저장되면, 가상 머신(304)은 외부 캐시 해시 테이블(310)에서 대응하는 KVP를 업데이트하기 위해 ocall(312)을 생성할 수 있다. 그런 다음 외부 캐시 해시 테이블(310)은 월드 상태(314) 내의 대응하는 KVP를 업데이트하기 위해 데이터베이스(320)와 캐시 동기화될 수 있다.
사용된 계정 데이터가 데이터베이스(320)에 저장된 경우, 가상 머신(304)은, 월드 상태(314)에서, 대응하는 KVP를 업데이트하기 위해 ocall(313)을 셍성할 수 있다. 전술한 바와 같이, 출력 데이터는 엔클레이브를 나가기 전에 암호화된다. 이로써, TCB(302)의 외부에 저장된 외부 캐시 해시 테이블(310) 및 월드 상태(308)는 대응하는 복호 키를 얻지 않고는 볼 수 없다.
TCB(302) 내부의 내부 캐시 해시 테이블(308)에 자주 액세스 계정 데이터를 저장함으로써, 가상 머신(304)이 스마트 계약을 실행하기 위해 TCB(302)의 외부로부터 계정 데이터를 리트리빙할 가능성이 감소될 수 있다. 엔클레이브 TCB(302)를 출입하는 데이터는 복호화 및 암호화가 필요하여 계산 부담이 증가하므로, TCB(302) 외부의 데이터에 대한 호출 감소는 계산 자원 소비를 줄여 계산 효율을 향상시킬 수 있다.
도 4는 본 명세서의 실시예에 따라 블록체인 데이터를 처리하고 저장하기 위한 프로세스(400)의 예의 흐름도이다. 편의상, 프로세스(400)는 하나 이상의 위치에 위치되고 본 명세서에 따라 적절하게 프로그래밍된 하나 이상의 컴퓨터 시스템에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 도 1의 컴퓨팅 시스템(106, 108)은 프로세스(400)를 수행할 수 있다.
단계 402에서, 블록체인 네트워크에 참여하는 블록체인 노드는 블록체인 노드에서 실행되는 TEE 내의 하나 이상의 소프트웨어 명령어의 실행 요청을 수신한다.
단계 404에서, TEE 내의 가상 머신은 하나 이상의 소프트웨어 명령어와 연관된 하나 이상의 블록체인 계정에 관한 데이터를 결정한다. 일부 예에서, 블록체인 계정은 블록체인 네트워크에 의해 유지되는 블록체인과 연관된다. 일부 예에서, 복수의 블록체인 계정은 하나 이상의 외부 소유 계정이나 계약 계정을 포함하고, 여기서, 계약 계정의 각각은 저장 루트를 포함한다. 일부 예에서, 저장 루트는 MPT의 루트 노드의 해시를 포함한다. MPT는 대응하는 계약 계정의 저장 내용의 해시를 인코딩할 수 있다.
단계 406에서, 가상 머신은 TEE에 저장된 내부 캐시 해시 테이블을 순회하여 데이터가 내부 캐시 해시 테이블에 포함되어 있는지를 결정한다. 일부 예에서, 하나 이상의 블록체인 계정과 연관된 데이터는 하나 이상의 KVP이고, 내부 캐시 해시 테이블은 블록체인의 복수 계정의 자주 액세스되는 저장 내용과 연관된 복수의 KVP를 저장한다.
단계 408에서, 데이터가 내부 캐시 해시 테이블에 포함된다는 결정에 응답하여, 가상 머신은 내부 캐시 해시 테이블로부터 데이터를 리트리빙함으로써 하나 이상의 소프트웨어 명령어를 실행한다. 일부 예에서, 하나 이상의 소프트웨어 명령을 실행하는 것에 응답하여, 가상 머신은 하나 이상의 KVP를 업데이트한다. 일부 예에서, 블록체인 노드는 내부 캐시 해시 테이블을 하나 이상의 KVP를 포함하는 외부 캐시 해시 테이블과 동기화한다. 일부 예에서, 외부 캐시 해시 테이블은 TEE와는 별의 캐시에 저장된다. 일부 예에서, 외부 캐시 해시 테이블은 블록체인의 하나 이상의 자주 액세스되는 계정과 연관된 복수의 KVP를 저장한다.
일부 실시예에서, 요청은 제 1 요청이고, 하나 이상의 소프트웨어 명령어는 제 1 소프트웨어 명령어이고, 하나 이상의 KVP는 제 1 KVP이다. 블록체인 노드는 TEE에서 제 2 소프트웨어 명령어를 실행하라는 제 2 요청을 추가 수신한다. 가상 머신은 제 2 소프트웨어 명령어와 연관된 제 2 KVP를 결정하고, 가상 머신은 제 2 KVP가 내부 캐시 해시 테이블에 포함되지 않은 것으로 결정한다.
일부 실시예에서, 제 2 KVP가 내부 캐시 해시 테이블에 포함되지 않는다는 결정에 응답하여, 가상 머신은 제 2 KVP가 외부 캐시 해시 테이블에 포함되는 것으로 추가 결정한다. 일부 예에서, 가상 머신은 직접 메모리 액세스를 통해 외부 캐시 해시 테이블에 액세스한다. 가상 머신은 제 2 KVP에 기초하여 제 2 소프트웨어 명령어를 실행한다. 하나 이상의 소프트웨어 명령어를 실행하는 것에 응답하여, 블록체인 노드는 외부 캐시 해시 테이블에 포함된 제 2 KVP를 업데이트하고, 외부 캐시 해시 테이블을 TEE와는 별개의 데이터베이스에 저장된 블록체인의 글로벌 상태와 동기화시킨다.
일부 실시예에서, 제 2 KVP가 내부 캐시 해시 테이블에 포함되지 않는다는 결정에 응답하여, 가상 머신은 제 2 KVP가 외부 캐시 해시 테이블에 포함되지 않는 것으로 결정한다. 제 2 KVP가 외부 캐시 해시 테이블에 포함되지 않는다는 결정에 응답하여, 가상 머신은 블록체인의 글로벌 상태로부터 제 2 KVP를 리트리빙함으로써 제 2 소프트웨어 명령어를 실행하고, 블록체인 노드는 하나 이상의 소프트웨어 명령어를 실행하는 것에 응답하여 제 2 KVP를 업데이트한다. 일부 실시예에서, 글로벌 상태는 MPT로서 데이터베이스에 저장된다.
도 5는 본 명세서의 실시예에 따른 장치(500)의 모듈 예를 나타내는 도면이다. 장치(500)는 CPU 및 물리적 메모리의 일부를 포함하는 신뢰 하드웨어의 실시예의 예일 수 있다. 장치(500)는 전술한 실시예에 대응할 수 있고, 장치(500)는 다음을 포함한다.
블록체인 노드에서 실행되는 TEE 내의 하나 이상의 소프트웨어 명령어의 실행 요청을 수신하는 요청 수신 모듈(502); 하나 이상의 소프트웨어 명령어와 연관된 하나 이상의 블록체인 계정에 관한 데이터를 결정하는 데이터 결정 모듈(504) - 여기서, 블록체인 계정은 블록체인 네트워크에 의해 유지되는 블록체인과 연관되고, 데이터가 TEE에 저장된 내부 캐시 해시 테이블에 포함되어 있음을 결정함 - ; 데이터가 내부 캐시 해시 테이블에 포함된다는 결정에 응답하여 하나 이상의 KVP에 기초하여 하나 이상의 소프트웨어 명령어를 실행하는 처리 모듈(506); 하나 이상의 소프트웨어 명령어의 실행에 응답하여, 데이터를 업데이트하는 데이터 업데이팅 서브 모듈(508); 및 내부 캐시 해시 테이블을 하나 이상의 KVP를 포함하는 외부 캐시 해시 테이블과 동기화하는 동기화 서브 모듈(510) - 여기서, 외부 캐시 해시 테이블은 TEE와는 별개의 캐시에 저장됨 - 을 포함한다.
선택적으로, 내부 캐시 해시 테이블은 블록체인의 자주 액세스되는 블록체인 계정과 연관된 KVP를 저장한다.
선택적으로, 요청은 제 1 요청이고, 하나 이상의 소프트웨어 명령어는 제 1 소프트웨어 명령어이고, 하나 이상의 KVP는 제 1 KVP이며, 요청 수신 모듈(502)은 TEE에서 제 2 소프트웨어 명령어를 실행하기 위한 제 2 요청을 더 수신하고; KVP 결정 모듈(504)은 제 2 소프트웨어 명령어와 연관된 제 2 KVP를 결정하고, 제 2 KVP는 내부 캐시 해시 테이블에 포함되지 않는다.
선택적으로, 제 2 KVP가 내부 캐시 해시 테이블에 포함되지 않는다는 결정에 응답하여, KVP 결정 모듈(504)은 제 2 KVP가 외부 캐시 해시 테이블에 포함되어 있다고 결정하고, 여기서, 가상 머신은 직접 메모리 액세스를 통해 외부 캐시 해시 테이블에 액세스하고; 처리 모듈(506)은 제 2 KVP에 기초하여 제 2 소프트웨어 명령어를 실행하고; 하나 이상의 소프트웨어 명령어의 실행에 응답하여, KVP 업데이팅 모듈(508)은 외부 캐시 해시 테이블에 포함된 제 2 KVP를 업데이트하며; 동기화 모듈(510)은 외부 캐시 해시 테이블을 TEE와는 별개의 데이터베이스에 저장된 블록체인의 글로벌 상태와 동기화한다.
선택적으로, 외부 캐시 해시 테이블은 블록체인의 하나 이상의 자주 액세스되는 계정과 연관된 복수의 KVP를 저장한다.
선택적으로, 제 2 KVP가 내부 캐시 해시 테이블에 포함되지 않았다는 결정에 응답하여, KVP 결정 모듈(504)은 제 2 KVP가 외부 캐시 해시 테이블에 포함되지 않은 것으로 결정하고; 제 2 KVP가 외부 캐시 해시 테이블에 포함되지 않는다는 결정에 응답하여, 처리 유닛(506)은 블록체인의 글로벌 상태로부터 제 2 KVP를 리트리빙함으로써 제 2 소프트웨어 명령어를 실행하며; KVP 업데이팅 유닛(508)은 하나 이상의 소프트웨어 명령어의 실행에 응답하여 제 2 KVP를 업데이트한다.
선택적으로, 글로벌 상태는 MPT로서 데이터베이스에 저장된다.
선택적으로, 글로벌 상태는 블록체인의 복수의 블록체인 계정의 주소와 상태 간의 매핑을 포함하고, 복수의 블록체인 계정은 하나 이상의 외부 소유 계정 또는 계약 계정을 포함하며, 각각의 계약 계정은 저장 루트를 포함한다.
본 명세서에 설명된 기술은 몇 가지 기술적 효과를 산출한다. 예를 들어, 본 발명의 실시예는 신뢰 환경에서 실행되는 블록체인 가상 머신이 스마트 계약을 실행하기 위해 TCB 외부의 애플리케이션으로부터 호출을 수신하도록 허용한다. 자주 액세스되는 블록체인 계정을 TCB 내부의 내부 캐시 해시 테이블에 저장함으로써, 가상 머신이 TCB 내에서 블록체인 데이터를 리트리빙할 가능성이 증가된다. 결과적으로, 신뢰 구성 요소와 비신뢰 구성 요소 간의 데이터 트래픽이 감소된다. 신뢰 구성 요소와 비신뢰 구성 요소 사이를 이동하는 데이터는 암호화 또는 복호화가 필요하기 때문에, 엔클레이브를 통한 데이터 트래픽이 적을수록 계산 자원 소비가 적고 데이터 보안이 향상될 수 있다. 또한, TCB 내에, 자주 액세스되는 계정 데이터를 포함시킴으로써, 데이터 리트리빙 및 업데이트는 계산 효율 및 데이터 보안을 향상시키기 위해 신뢰 환경에서 평문에 기초하여 수행될 가능성이 더 높다.
설명된 방법론은 다양한 블록체인 거래와 전반적인 거래/데이터 보안을 향상시킨다. 스마트 계약을 실행하기 위한 호출을 시작하는 블록체인 사용자는 신뢰 환경에서 계산이 수행되고 계산 결과가 변경될 수 없음을 확신할 수 있다.
설명된 방법론은, 자주 액세스되는 블록체인 데이터가 평문으로 저장되고 TEE 내부에서 리트리빙 및 업데이트되기 때문에, 컴퓨터 자원(예컨대: 처리 사이클, 네트워크 대역폭 및 메모리 사용)의 효율적인 사용을 보장할 수 있다. 적어도 이들 동작은 블록체인 데이터 암호화 및 복호화와 관련하여 사용 가능한 컴퓨터 자원의 낭비를 줄일 수 있다. 스마트 계약 처리를 위해, TEE 외부에서 리트리빙된 데이터를 복호해야 하는 가상 머신 대신, 자주 액세스되는 데이터용의 가상 머신이 엔클레이브 내부의 평문에서 직접 작동할 수 있다.
이전 실시예들에서 예시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시예의 장치는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩탑 컴퓨터, 휴대폰, 카메라 폰, 스마트 폰, PDA(Personal Digital Assistant), 미디어 플레이어, 내비게이션 장치, 이메일 송수신 장치, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이들 디바이스의 조합일 수 있다.
장치에서 각 모듈의 기능 및 역할의 실시 프로세스에 대해, 이전 방법에서의 대응 단계의 실시 프로세스가 참조될 수 있다. 간략화를 위해 여기에서는 상세한 설명을 생략한다.
장치 실시예는 기본적으로 방법 실시예에 대응하기 때문에, 관련 부분에 대해서는 방법 실시예의 관련 설명을 참조할 수 있다. 이전에 설명된 장치의 실시예는 단지 일 예일 뿐이다. 별개의 부분으로 기술된 모듈은 물리적으로 분리될 수도 있거나 그렇지 않을 수도 있고, 모듈로서 디스플레이된 부분은 물리적 모듈일 수도 있거나, 그렇지 않을 수도 있으며, 한 위치에 위치될 수 있거나 또는 다수의 네트워크 모듈 상에 분포될 수도 있다. 모듈의 일부 또는 전부는 본 명세서의 솔루션의 목적을 달성하기 위한 실제 요구에 기초하여 선택될 수 있다. 당업자라면 창조적 노력없이 본 출원의 실시예를 이해하고 구현할 수 있다.
본 명세서에서 설명된 요지, 동작 및 작동의 실시예들은 본 명세서에 개시된 구조 및 이들의 구조적 등가물을 포함하는, 디지털 전자 회로로, 유형적으로(tangibly) 실시되는 컴퓨터 소프트웨어 혹은 펌웨어로, 컴퓨터 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 요지의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의한 실행을 위해 또는 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어 상에 인코딩된 컴퓨터 프로그램 명령들 중 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 인코딩되거나 거기에 저장된 명령어를 갖는 하나 이상의 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 캐리어는 자기, 광자기 또는 광 디스크, 솔리드 스테이트 드라이브, RAM(Random Access Memory), ROM(Read-Only Memory), 또는 다른 유형의 매체와 같은 유형의 컴퓨터 판독 가능 비일시적 매체일 수 있다. 대안적으로 또는 부가적으로, 캐리어는 인위적으로 생성된 전파형(propagated) 신호, 예컨대, 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위한 정보를 인코딩하도록 생성되는 머신-생성형 전기, 광학, 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 디바이스, 또는 그들의 하나 이상의 조합이거나, 그 일부일 수 있다. 컴퓨터 저장 매체는 전파된 신호가 없다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트 또는 코드로도 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 해석된 언어, 또는 선언적이거나 절차적 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고; 독립형 프로그램 또는 컴퓨팅 환경에서 실행하기에 적합한 모듈, 구성 요소, 엔진, 서브 루틴 또는 다른 유닛을 포함하는 임의 형태로 전개될 수 있으며, 이러한 환경은 하나 이상의 위치에서 데이터 통신 네트워크로 상호 연결된 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템에서의 파일에 대응할 수 있지만, 반드시 필수적인 것은 아니다. 컴퓨터 프로그램은 다른 프로그램들이나 데이터, 예컨대, 마크업(markup) 언어 문서에 저장된 하나 이상의 스크립트를 유지하는 파일의 일부에, 문제의 프로그램에 전용되는 단일 파일에, 또는 다수의 조정형(coordinated) 파일들, 예컨대, 하나 이상의 모듈, 서브 프로그램 또는 코드의 일부를 저장한 파일들에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서는, 예를 들어, 범용 마이크로프로세서 및 특수 목적용 마이크로프로세서 및 임의의 종류의 디지털 컴퓨터의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 연결된 컴퓨터 판독 가능 비일시적 매체로부터의 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령어를 수신할 것이다.
용어 "데이터 처리 장치"는, 예를 들어, 프로그램 가능 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 머신을 포함한다. 데이터 처리 장치는 특수 목적용 논리 회로, 예컨대, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 또는 GPU(Graphics Processing Unit)를 포함할 수 있다. 장치는 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 그들의 하나 이상의 조합을 구성하는 코드를 하드웨어에 추가적으로 포함할 수도 있다.
설명된 처리 및 로직 흐름은 입력 데이터를 동작시키고 출력을 생성함으로써 동작을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 컴퓨터 또는 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름은, 또한, 특수 목적용 논리 회로, 예컨대, FPGA, ASIC 또는 GPU, 또는 특수 목적용 논리 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램 실행에 적합한 컴퓨터는 일반 또는 특수 목적용 마이크로프로세서나 양쪽 모두 또는 임의의 다른 유형의 CPU(Central Processing Unit)에 기초할 수 있다. 일반적으로, CPU는 ROM이나 RAM 또는 양쪽 모두로부터 명령어 및 데이터를 수신할 것이다. 컴퓨터의 요소는, 명령어를 실행하기 위한 CPU와, 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. CPU 및 메모리는 특수 목적용 논리 회로에 의해 보완되거나 거기에 통합될 수 있다.
일반적으로, 컴퓨터는, 또한, 하나 이상의 저장 디바이스로부터 데이터를 수신하거나 하나 이상의 저장 디바이스로 데이터를 전송하도록 포함되거나 또는 동작적으로 연결될 것이다. 저장 디바이스는, 예를 들어, 자기, 광자기 또는 광 디스크, 솔리드 스테이트 드라이브, 또는 임의의 다른 유형의 컴퓨터 판독 가능 비일시적 매체일 수 있다. 하지만, 컴퓨터는 이러한 디바이스들을 가질 필요는 없다. 따라서, 컴퓨터는 로컬 및/또는 원격인 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 연결될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 필수 구성 요소인 하나 이상의 로컬 메모리를 포함할 수 있거나, 클라우드 네트워크 내에 있는 하나 이상의 원격 메모리에 연결될 수 있다. 게다가, 컴퓨터는 다른 디바이스, 몇 가지만 언급하면, 예컨대, 모바일 전화, PDA(Personal Digital Assistant), 모바일 오디오나 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 USB(Universal Serial Bus) 플래시 드라이브와 같은 휴대용 저장 디바이스 내에 내장될 수 있다.
구성 요소는 직접 또는 하나 이상의 중간 구성 요소를 통해, 전기적으로 또는 광학적으로 서로 연결되는 것과 같이 상호적으로(commutatively) 서로 "연결"될 수 있다. 구성 요소 중 하나가 다른 구성 요소에 통합되어 있으면, 구성 요소를 서로 "연결"할 수도 있다. 예를 들어, 프로세서(예컨대, L2 캐시 구성 요소)에 통합된 저장 구성 요소는 프로세서에 "결합"된다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 요지의 실시예는 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예컨대, LCD 모니터와, 사용자가 컴퓨터에 입력할 수 있는 입력 디바이스, 예컨대, 키보드와, 포인팅 장치(예컨대, 마우스, 트랙볼 또는 터치 패드)를 갖는 컴퓨터에 구현하거나, 그 컴퓨터와 통신하도록 구성할 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 장치가 사용될 수도 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각적 피드백, 예컨대, 시각 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 문서들을 사용자에 의해 사용되는 디바이스와 송수신을 행함으로써, 예컨대, 웹 브라우저로부터 수신된 요청들에 응답하여 사용자 디바이스 상의 웹 브라우저에 웹 페이지들을 전송하거나, 스마트폰이나 전자 태블릿과 같은 사용자 디바이스에서 실행되는 앱과 상호 작용함으로써, 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인 디바이스, 예컨대, 메시징 애플리케이션을 실행하고 있는 스마트 폰에 보내고, 그에 대한 응답 메시지를 사용자로부터 수신함으로써 사용자와 상호 작용할 수 있다.
본 명세서는 시스템, 장치 및 컴퓨터 프로그램 구성 요소와 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터가 특정 작동이나 동작을 수행하도록 구성된 시스템에 대해서는, 그 시스템이 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합을 설치하여 시스템이 작업 또는 동작을 수행하도록 하는 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 작동이나 동작을 수행하도록 구성되는 경우, 하나 이상의 프로그램이 데이터 처리 장치에 의해 실행될 때, 장치가 작동이나 동작을 수행하게 하는 명령어를 포함하고 있음을 의미한다. 특수 목적용 논리 회로가 특정 작동이나 동작을 수행하도록 구성되는 경우, 회로가 작동이나 동작을 수행하는 전자적인 로직을 갖는 것을 의미한다.
본 명세서는 많은 특정 실시예의 상세를 포함할 수 있지만, 이들은 특허 청구 범위 자체에 의해 정의되는 청구 대상의 범주에 대한 제한으로 해석되지 않고, 오히려 특정 실시예로 특정될 수 있는 특징에 대한 설명으로 해석되어야 한다. 별개의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 반대로, 단일 실시예와 관련하여 설명된 다양한 특징은 다수의 실시예에서 개별적으로 또는 임의의 적절한 하위 조합으로 실현될 수도 있다. 더욱이, 위에서 특정 조합에 작용하는 특징으로 설명될 수 있고, 심지어 최초에 그렇게 청구될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은, 일부 경우에서는, 조합으로부터 제외될 수 있으며, 청구 범위는 하위 조합이나 하위 조합의 변형으로 유도될 수 있다.
유사하게, 작동은 도면에 도시되고 특정 순서로 청구 범위에 인용되고 있지만, 이는, 바람직한 결과를 달성하기 위해, 이러한 작동이 도시된 특정 순서로 또는 순차적 수순으로 수행되거나 도시된 모든 작동이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 전술한 실시예에서 다양한 시스템 모듈 및 구성 요소의 분리는 모든 실시예에서 그러한 분리를 필요로 하는 것으로 이해되지는 않아야 하고, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 또는 다수의 소프트웨어 제품으로 패키징될 수 있음이 이해되어야 한다.
요지의 특정 실시예가 설명되었다. 다른 실시예는 다음의 특허 청구 범위의 범주 내에 있다. 예를 들어, 특허 청구 범위에 인용된 동작은 다른 순서로 수행될 수 있고 여전히 바람직한 결과를 달성할 수 있다. 일 예로서, 첨부 도면에 도시된 처리는 바람직한 결과를 달성하기 위해 도시된 특정 순서나 순차적 순서를 반드시 요구할 필요는 없다. 몇몇 경우에, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (18)

  1. 신뢰 실행 환경(TEE: Trusted Execution Environment) 하에서 블록체인 데이터를 처리하기 위한 컴퓨터 구현 방법으로서,
    블록체인 노드에 의해, 상기 블록체인 노드에서 실행되는 TEE 내에서 하나 이상의 소프트웨어 명령어를 실행해달라는 요청을 수신하는 단계;
    상기 TEE 내의 가상 머신에 의해, 상기 요청에 기초하여 상기 하나 이상의 소프트웨어 명령어를 실행하기 위해 하나 이상의 블록체인 계정과 연관된 데이터를 결정하는 단계 - 상기 하나 이상의 블록체인 계정과 연관된 데이터는 하나 이상의 KVP(Key-Value Pair)이고, 내부 캐시 해시 테이블은, 블록체인의 복수 계정들의 자주 액세스되는 저장 내용과 연관된 복수의 KVP들을 저장함 - ;
    상기 가상 머신에 의해, 상기 데이터가 상기 내부 캐시 해시 테이블 내에 포함되어 있는지 여부를 결정하기 위해 상기 TEE 내에 저장되어 있는 상기 내부 캐시 해시 테이블을 순회(traverse)하는 단계;
    상기 블록체인 노드에 의해, 외부 캐시 해시 테이블 내에 포함된 제1 일부의 KVP들 및 상기 내부 캐시 해시 테이블 내에 포함되지 않은 제2 일부의 KVP들을 결정하기 위해, 직접 메모리 액세스를 통해 상기 외부 캐시 해시 테이블을 순회하는 단계;
    상기 데이터가 상기 내부 캐시 해시 테이블 내에 포함되어 있다고 결정한 것에 응답하여, 상기 내부 캐시 해시 테이블로부터 상기 데이터를 리트리빙(retrieve)함으로써 그리고 상기 제2 일부의 KVP들이 상기 외부 캐시 해시 테이블 내에 포함되어 있는 경우 상기 외부 캐시 해시 테이블로부터 상기 제2 일부의 KVP들을 리트리빙함으로써, 상기 가상 머신에 의해, 상기 하나 이상의 소프트웨어 명령어를 실행하는 단계
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 가상 머신에 의해, 상기 내부 캐시 해시 테이블을 업데이트하는 단계;
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 블록체인 노드에 의해, 상기 외부 캐시 해시 테이블을 업데이트하는 단계; 및
    상기 블록체인 노드에 의해, 상기 외부 캐시 해시 테이블을, 상기 TEE와는 별개의 데이터베이스 내에 저장되어 있는 블록체인의 글로벌 상태와 동기화하고, 상기 내부 캐시 해시 테이블을, 상기 하나 이상의 블록체인 계정과 연관된 데이터를 포함하는 외부 캐시 해시 테이블 - 상기 외부 캐시 해시 테이블은 상기 TEE와 별개의 캐시 메모리 내에 저장된 것임 - 과 동기화하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 외부 캐시 해시 테이블은 상기 블록체인의 자주 액세스되는 계정들의 상태 및 저장 내용과 연관된 복수의 KVP들을 저장한 것인 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 제2 일부의 KVP들이 상기 내부 캐시 해시 테이블 또는 상기 외부 캐시 해시 테이블 내에 포함되어 있지 않은 경우, 상기 글로벌 상태로부터 상기 제2 일부의 KVP들을 리트리빙함으로써, 상기 가상 머신에 의해, 상기 하나 이상의 소프트웨어 명령어를 실행하는 단계; 및
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 블록체인 노드에 의해, 상기 글로벌 상태를 업데이트하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 글로벌 상태는 MPT(Merkle Patricia Tree)로서 엔클레이브(enclave) 외부의 데이터베이스 내에 저장된 것인 컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    상기 글로벌 상태는 상기 블록체인의 복수의 블록체인 계정들의 주소와 상태 간의 매핑을 포함하고,
    상기 복수의 블록체인 계정들은 하나 이상의 외부 소유 계정들 또는 계약 계정들을 포함하며,
    상기 계약 계정들 각각은 저장 루트(storage root)를 포함한 것인 컴퓨터 구현 방법.
  6. 제 5 항에 있어서,
    상기 저장 루트는 MPT의 루트 노드의 해시를 포함하고,
    상기 MPT는 대응하는 계약 계정의 저장 내용의 해시를 인코딩한 것인 컴퓨터 구현 방법.
  7. 신뢰 실행 환경(TEE: Trusted Execution Environment) 하에서 블록체인 데이터를 처리하기 위한 동작들을 수행하도록 컴퓨터 시스템에 의해 실행가능한 하나 이상의 명령어를 저장한 비일시적 컴퓨터 판독가능 저장 매체에 있어서,
    상기 동작들은,
    블록체인 노드에 의해, 상기 블록체인 노드에서 실행되는 TEE 내에서 하나 이상의 소프트웨어 명령어를 실행해달라는 요청을 수신하는 동작;
    상기 TEE 내의 가상 머신에 의해, 상기 요청에 기초하여 상기 하나 이상의 소프트웨어 명령어를 실행하기 위해 하나 이상의 블록체인 계정과 연관된 데이터를 결정하는 동작 - 상기 하나 이상의 블록체인 계정과 연관된 데이터는 하나 이상의 KVP(Key-Value Pair)이고, 내부 캐시 해시 테이블은, 블록체인의 복수 계정들의 자주 액세스되는 저장 내용과 연관된 복수의 KVP들을 저장함 - ;
    상기 가상 머신에 의해, 상기 데이터가 상기 내부 캐시 해시 테이블 내에 포함되어 있는지 여부를 결정하기 위해 상기 TEE 내에 저장되어 있는 상기 내부 캐시 해시 테이블을 순회(traverse)하는 동작;
    상기 블록체인 노드에 의해, 외부 캐시 해시 테이블 내에 포함된 제1 일부의 KVP들 및 상기 내부 캐시 해시 테이블 내에 포함되지 않은 제2 일부의 KVP들을 결정하기 위해, 직접 메모리 액세스를 통해 상기 외부 캐시 해시 테이블을 순회하는 동작;
    상기 데이터가 상기 내부 캐시 해시 테이블 내에 포함되어 있다고 결정한 것에 응답하여, 상기 내부 캐시 해시 테이블로부터 상기 데이터를 리트리빙(retrieve)함으로써 그리고 상기 제2 일부의 KVP들이 상기 외부 캐시 해시 테이블 내에 포함되어 있는 경우 상기 외부 캐시 해시 테이블로부터 상기 제2 일부의 KVP들을 리트리빙함으로써, 상기 가상 머신에 의해, 상기 하나 이상의 소프트웨어 명령어를 실행하는 동작
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 가상 머신에 의해, 상기 내부 캐시 해시 테이블을 업데이트하는 동작;
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 블록체인 노드에 의해, 상기 외부 캐시 해시 테이블을 업데이트하는 동작; 및
    상기 블록체인 노드에 의해, 상기 외부 캐시 해시 테이블을, 상기 TEE와는 별개의 데이터베이스 내에 저장되어 있는 블록체인의 글로벌 상태와 동기화하고, 상기 내부 캐시 해시 테이블을, 상기 하나 이상의 블록체인 계정과 연관된 데이터를 포함하는 외부 캐시 해시 테이블 - 상기 외부 캐시 해시 테이블은 상기 TEE와 별개의 캐시 메모리 내에 저장된 것임 - 과 동기화하는 동작
    을 포함하는 것인 비일시적 컴퓨터 판독가능 저장 매체.
  8. 제 7 항에 있어서,
    상기 외부 캐시 해시 테이블은 상기 블록체인의 자주 액세스되는 계정들의 상태 및 저장 내용과 연관된 복수의 KVP들을 저장한 것인 비일시적 컴퓨터 판독가능 저장 매체.
  9. 제 7 항에 있어서,
    상기 동작들은,
    상기 제2 일부의 KVP들이 상기 내부 캐시 해시 테이블 또는 상기 외부 캐시 해시 테이블 내에 포함되어 있지 않은 경우, 상기 글로벌 상태로부터 상기 제2 일부의 KVP들을 리트리빙함으로써, 상기 가상 머신에 의해, 상기 하나 이상의 소프트웨어 명령어를 실행하는 동작; 및
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 블록체인 노드에 의해, 상기 글로벌 상태를 업데이트하는 동작
    을 더 포함하는 것인 비일시적 컴퓨터 판독가능 저장 매체.
  10. 제 7 항에 있어서,
    상기 글로벌 상태는 MPT(Merkle Patricia Tree)로서 엔클레이브(enclave) 외부의 데이터베이스 내에 저장된 것인 비일시적 컴퓨터 판독가능 저장 매체.
  11. 제 7 항에 있어서,
    상기 글로벌 상태는 상기 블록체인의 복수의 블록체인 계정들의 주소와 상태 간의 매핑을 포함하고,
    상기 복수의 블록체인 계정들은 하나 이상의 외부 소유 계정들 또는 계약 계정들을 포함하며,
    상기 계약 계정들 각각은 저장 루트(storage root)를 포함한 것인 비일시적 컴퓨터 판독가능 저장 매체.
  12. 제 11 항에 있어서,
    상기 저장 루트는 MPT의 루트 노드의 해시를 포함하고,
    상기 MPT는 대응하는 계약 계정의 저장 내용의 해시를 인코딩한 것인 비일시적 컴퓨터 판독가능 저장 매체.
  13. 신뢰 실행 환경(TEE: Trusted Execution Environment) 하에서 블록체인 데이터를 처리하기 위한, 컴퓨터로 구현된(computer-implemented) 시스템에 있어서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터와 상호동작가능하게 연결되고, 상기 하나 이상의 컴퓨터에 의해 실행될 때 하나 이상의 동작을 실행하는 하나 이상의 명령어를 저장한 유형의(tangible) 비일시적인 기계 판독가능 매체를 가지는, 하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고,
    상기 하나 이상의 동작은,
    블록체인 노드에 의해, 상기 블록체인 노드에서 실행되는 TEE 내에서 하나 이상의 소프트웨어 명령어를 실행해달라는 요청을 수신하는 동작;
    상기 TEE 내의 가상 머신에 의해, 상기 요청에 기초하여 상기 하나 이상의 소프트웨어 명령어를 실행하기 위해 하나 이상의 블록체인 계정과 연관된 데이터를 결정하는 동작 - 상기 하나 이상의 블록체인 계정과 연관된 데이터는 하나 이상의 KVP(Key-Value Pair)이고, 내부 캐시 해시 테이블은, 블록체인의 복수 계정들의 자주 액세스되는 저장 내용과 연관된 복수의 KVP들을 저장함 - ;
    상기 가상 머신에 의해, 상기 데이터가 상기 내부 캐시 해시 테이블 내에 포함되어 있는지 여부를 결정하기 위해 상기 TEE 내에 저장되어 있는 상기 내부 캐시 해시 테이블을 순회(traverse)하는 동작;
    상기 블록체인 노드에 의해, 외부 캐시 해시 테이블 내에 포함된 제1 일부의 KVP들 및 상기 내부 캐시 해시 테이블 내에 포함되지 않은 제2 일부의 KVP들을 결정하기 위해, 직접 메모리 액세스를 통해 상기 외부 캐시 해시 테이블을 순회하는 동작;
    상기 데이터가 상기 내부 캐시 해시 테이블 내에 포함되어 있다고 결정한 것에 응답하여, 상기 내부 캐시 해시 테이블로부터 상기 데이터를 리트리빙(retrieve)함으로써 그리고 상기 제2 일부의 KVP들이 상기 외부 캐시 해시 테이블 내에 포함되어 있는 경우 상기 외부 캐시 해시 테이블로부터 상기 제2 일부의 KVP들을 리트리빙함으로써, 상기 가상 머신에 의해, 상기 하나 이상의 소프트웨어 명령어를 실행하는 동작
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 가상 머신에 의해, 상기 내부 캐시 해시 테이블을 업데이트하는 동작;
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 블록체인 노드에 의해, 상기 외부 캐시 해시 테이블을 업데이트하는 동작; 및
    상기 블록체인 노드에 의해, 상기 외부 캐시 해시 테이블을, 상기 TEE와는 별개의 데이터베이스 내에 저장되어 있는 블록체인의 글로벌 상태와 동기화하고, 상기 내부 캐시 해시 테이블을, 상기 하나 이상의 블록체인 계정과 연관된 데이터를 포함하는 외부 캐시 해시 테이블 - 상기 외부 캐시 해시 테이블은 상기 TEE와 별개의 캐시 메모리 내에 저장된 것임 - 과 동기화하는 동작
    을 포함하는 것인 컴퓨터로 구현된 시스템.
  14. 제 13 항에 있어서,
    상기 외부 캐시 해시 테이블은 상기 블록체인의 자주 액세스되는 계정들의 상태 및 저장 내용과 연관된 복수의 KVP들을 저장한 것인 컴퓨터로 구현된 시스템.
  15. 제 13 항에 있어서,
    상기 하나 이상의 동작은,
    상기 제2 일부의 KVP들이 상기 내부 캐시 해시 테이블 또는 상기 외부 캐시 해시 테이블 내에 포함되어 있지 않은 경우, 상기 글로벌 상태로부터 상기 제2 일부의 KVP들을 리트리빙함으로써, 상기 가상 머신에 의해, 상기 하나 이상의 소프트웨어 명령어를 실행하는 동작; 및
    상기 하나 이상의 소프트웨어 명령어를 실행한 것에 응답하여, 상기 블록체인 노드에 의해, 상기 글로벌 상태를 업데이트하는 동작
    을 더 포함하는 것인 컴퓨터로 구현된 시스템.
  16. 제 13 항에 있어서,
    상기 글로벌 상태는 MPT(Merkle Patricia Tree)로서 엔클레이브(enclave) 외부의 데이터베이스 내에 저장된 것인 컴퓨터로 구현된 시스템.
  17. 제 13 항에 있어서,
    상기 글로벌 상태는 상기 블록체인의 복수의 블록체인 계정들의 주소와 상태 간의 매핑을 포함하고,
    상기 복수의 블록체인 계정들은 하나 이상의 외부 소유 계정들 또는 계약 계정들을 포함하며,
    상기 계약 계정들 각각은 저장 루트(storage root)를 포함한 것인 컴퓨터로 구현된 시스템.
  18. 제 17 항에 있어서,
    상기 저장 루트는 MPT의 루트 노드의 해시를 포함하고,
    상기 MPT는 대응하는 계약 계정의 저장 내용의 해시를 인코딩한 것인 컴퓨터로 구현된 시스템.
KR1020197031533A 2019-04-03 2019-04-03 신뢰 실행 환경 하에서의 블록체인 데이터의 처리 및 저장 KR102151907B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/081182 WO2019120328A2 (en) 2019-04-03 2019-04-03 Processing and storing blockchain data under a trusted execution environment

Publications (1)

Publication Number Publication Date
KR102151907B1 true KR102151907B1 (ko) 2020-09-03

Family

ID=66994167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031533A KR102151907B1 (ko) 2019-04-03 2019-04-03 신뢰 실행 환경 하에서의 블록체인 데이터의 처리 및 저장

Country Status (9)

Country Link
US (2) US10699006B1 (ko)
EP (1) EP3619665B1 (ko)
JP (1) JP6779389B2 (ko)
KR (1) KR102151907B1 (ko)
CN (1) CN110945550B (ko)
AU (1) AU2019204730C1 (ko)
CA (1) CA3061265C (ko)
SG (1) SG11201909847SA (ko)
WO (1) WO2019120328A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201909847SA (en) 2019-04-03 2019-11-28 Alibaba Group Holding Ltd Processing and storing blockchain data under a trusted execution environment
AU2019207310A1 (en) * 2019-04-26 2020-11-12 Advanced New Technologies Co., Ltd. Anti-replay attack authentication protocol
EP3669280B1 (en) * 2019-07-11 2021-09-08 Advanced New Technologies Co., Ltd. Shared blockchain data storage
CN110766550B (zh) * 2019-09-05 2021-06-22 创新先进技术有限公司 基于区块链的资产查询方法及装置、电子设备
CN111656343B (zh) * 2019-09-11 2023-06-30 创新先进技术有限公司 可信执行环境中基于纠错编码的共享区块链数据存储
CN110602125B (zh) * 2019-09-23 2021-04-13 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及存储介质
CN110717203B (zh) * 2019-09-25 2021-04-27 支付宝(杭州)信息技术有限公司 基于fpga实现隐私区块链的方法及装置
US11200040B2 (en) * 2020-01-08 2021-12-14 The Boeing Company Distributed ledger for software distribution in a wireless ad hoc network for ad-hoc data processing on a source node
CN111047450A (zh) * 2020-03-18 2020-04-21 支付宝(杭州)信息技术有限公司 链上数据的链下隐私计算方法及装置
CN111630830B (zh) * 2020-04-15 2023-07-04 支付宝(杭州)信息技术有限公司 账户模型下的分布式区块链数据存储
SG11202103246SA (en) 2020-04-20 2021-04-29 Alipay Hangzhou Inf Tech Co Ltd Distributed blockchain data storage under account model
CN111936995A (zh) * 2020-06-08 2020-11-13 支付宝实验室(新加坡)有限公司 海关清关数据的分布式存储
CN112286642B (zh) * 2020-12-24 2021-04-30 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN112286641B (zh) * 2020-12-24 2021-04-20 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
JP7472781B2 (ja) 2020-12-25 2024-04-23 株式会社デンソー データ保存装置、データ保存方法、およびデータ保存プログラム
CN113094396B (zh) * 2021-01-18 2022-07-26 腾讯科技(深圳)有限公司 基于节点内存的数据处理方法、装置、设备以及介质
US12045337B2 (en) 2021-05-21 2024-07-23 Samsung Electronics Co., Ltd. Apparatus and method for providing secure execution environment for NPU
US11829495B2 (en) 2021-08-05 2023-11-28 International Business Machines Corporation Confidential data provided to a secure guest via metadata
US11809607B2 (en) 2021-08-05 2023-11-07 International Business Machines Corporation Customization of multi-part metadata of a secure guest
CN118133325B (zh) * 2024-05-07 2024-07-12 泉州师范学院 基于链上链下的数据管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018126065A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Decentralized data storage and processing for iot devices
US20180227275A1 (en) * 2017-02-07 2018-08-09 Microsoft Technology Licensing, Llc Establishment of consortium blockchain network
US20190273617A1 (en) * 2018-03-02 2019-09-05 Intertrust Technologies Corporation Trust and identity management systems and methods

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946817A (zh) * 2015-01-30 2022-01-18 E·马伊姆 用于管理安全实体的连网承诺的系统和方法
EP3345360B1 (en) * 2015-09-04 2021-03-03 Nec Corporation Method for storing an object on a plurality of storage nodes
CN105701416B (zh) 2016-01-11 2019-04-05 华为技术有限公司 强制访问控制方法、装置和物理主机
ES2691254T3 (es) 2016-05-13 2018-11-26 nChain Holdings Limited Método y sistema para verificar la integridad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares
WO2018006072A1 (en) * 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
US10540652B2 (en) * 2016-11-18 2020-01-21 Intel Corporation Technology for secure partitioning and updating of a distributed digital ledger
CN106850200B (zh) * 2017-01-25 2019-10-22 中钞信用卡产业发展有限公司杭州区块链技术研究院 一种使用基于区块链的数字货币的安全方法、系统及终端
CN107018125B (zh) * 2017-02-17 2019-08-09 阿里巴巴集团控股有限公司 一种区块链系统、数据存储方法及装置
US10255342B2 (en) 2017-04-12 2019-04-09 Vijay K. Madisetti Method and system for tuning blockchain scalability, decentralization, and security for fast and low-cost payment and transaction processing
US10742393B2 (en) 2017-04-25 2020-08-11 Microsoft Technology Licensing, Llc Confidentiality in a consortium blockchain network
GB201707788D0 (en) 2017-05-15 2017-06-28 Nchain Holdings Ltd Computer-implemented system and method
WO2018229632A1 (en) * 2017-06-14 2018-12-20 nChain Holdings Limited Systems and methods for addressing security-related vulnerabilities arising in relation to off-blockchain channels in the event of failures in a network
CN107391649A (zh) 2017-07-14 2017-11-24 浙商银行股份有限公司 一种提升区块链查询效率的系统及方法
US20190095879A1 (en) 2017-09-26 2019-03-28 Cornell University Blockchain payment channels with trusted execution environments
CN108055133B (zh) * 2017-12-12 2020-02-14 江苏安凰领御科技有限公司 一种基于区块链技术的密钥安全签名方法
CN108667836B (zh) * 2018-05-08 2021-01-26 众安信息技术服务有限公司 区块链共识方法
CN108763443A (zh) 2018-05-25 2018-11-06 众安信息技术服务有限公司 区块链账户处理方法与装置
CN109102299A (zh) 2018-08-01 2018-12-28 腾讯科技(深圳)有限公司 资源转移数据管理方法、装置及存储介质
CN109409122B (zh) * 2018-09-13 2022-08-16 远光软件股份有限公司 文件存储方法及其电子设备、存储介质
CN109559105A (zh) * 2018-11-05 2019-04-02 深圳市恒达移动互联科技有限公司 基于tee及加密芯片的数字钱包生成方法及系统
SG11201909847SA (en) 2019-04-03 2019-11-28 Alibaba Group Holding Ltd Processing and storing blockchain data under a trusted execution environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018126065A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Decentralized data storage and processing for iot devices
US20180227275A1 (en) * 2017-02-07 2018-08-09 Microsoft Technology Licensing, Llc Establishment of consortium blockchain network
US20190273617A1 (en) * 2018-03-02 2019-09-05 Intertrust Technologies Corporation Trust and identity management systems and methods

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Raymond Cheng et al, "Ekiden: A Platform for Confidentiality-Preserving, Trustworthy, and Performant Smart Contract Execution"(2018.04.) *

Also Published As

Publication number Publication date
WO2019120328A3 (en) 2020-01-30
US20200311257A1 (en) 2020-10-01
AU2019204730A1 (en) 2019-06-27
CN110945550A (zh) 2020-03-31
US10860710B2 (en) 2020-12-08
CA3061265A1 (en) 2019-06-27
EP3619665A4 (en) 2020-06-03
WO2019120328A2 (en) 2019-06-27
US10699006B1 (en) 2020-06-30
CA3061265C (en) 2022-03-08
AU2019204730C1 (en) 2021-04-29
JP2020525877A (ja) 2020-08-27
AU2019204730B2 (en) 2020-10-15
JP6779389B2 (ja) 2020-11-04
SG11201909847SA (en) 2019-11-28
CN110945550B (zh) 2023-10-27
EP3619665B1 (en) 2021-07-07
EP3619665A2 (en) 2020-03-11

Similar Documents

Publication Publication Date Title
KR102151907B1 (ko) 신뢰 실행 환경 하에서의 블록체인 데이터의 처리 및 저장
KR102247658B1 (ko) 신뢰 실행 환경에서 실행되는 스마트 계약 동작에 기초한 블록체인 데이터의 프로세싱
EP3673620B1 (en) Shared blockchain data storage
EP3669280B1 (en) Shared blockchain data storage
EP3669281B1 (en) Shared blockchain data storage
AU2019204725B2 (en) Retrieving access data for blockchain networks using highly available trusted execution environments
CN111066286A (zh) 使用高可用性的可信执行环境检索区块链网络的公共数据

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant