KR102222612B1 - 스마트 계약 화이트리스트 - Google Patents
스마트 계약 화이트리스트 Download PDFInfo
- Publication number
- KR102222612B1 KR102222612B1 KR1020197023255A KR20197023255A KR102222612B1 KR 102222612 B1 KR102222612 B1 KR 102222612B1 KR 1020197023255 A KR1020197023255 A KR 1020197023255A KR 20197023255 A KR20197023255 A KR 20197023255A KR 102222612 B1 KR102222612 B1 KR 102222612B1
- Authority
- KR
- South Korea
- Prior art keywords
- smart contract
- whitelist
- execute
- account
- node
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H04L2209/38—
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Power Engineering (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
- Telephonic Communication Services (AREA)
Abstract
본 명세서의 구현은, 블록체인 네트워크의 노드에 의해, 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하라는 요청을 식별하는 것 ― 요청은 스마트 계약을 실행하도록 요청하는 요청 계정을 식별함 ― ; 노드에 의해, 스마트 계약과 연관된 블록체인으로부터 화이트리스트(whitelist)를 리트리브(retrieving)하는 것 ― 화이트리스트는 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별함 ― ; 노드에 의해, 요청 계정이 화이트리스트에 포함되는 것에 기초하여, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 것; 그리고 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 노드에 의해, 스마트 계약을 실행하는 것을 포함한다.
Description
컨센서스(consensus) 네트워크들 및/또는 블록체인 네트워크들로서 또한 지칭되는 DLS(distributed ledger system)은 참여하는 엔티티들이 데이터를 안전하게 그리고 불변적으로 저장하는 것을 가능하게 한다. DLS들은 일반적으로 임의의 특정 사용자 경우와 관계없이 블록체인 네트워크로서 지칭된다. 블록체인 네트워크들의 유형들의 예들은 공개 블록체인 네트워크들, 개인 블록체인 네트워크들 및 컨소시엄 블록체인 네트워크들을 포함할 수 있다. 컨센서스 블록체인 네트워크에는 컨소시엄 프로세스를 제어하는 엔티티들의 선택된 그룹이 제공되며, 액세스 제어 층을 포함한다.
스마트 계약은 블록체인 네트워크에 의해 저장되고 실행되는 실행 가능한 소프트웨어 명령들의 세트이다. 스마트 계약들은 일반적으로 암호화되지 않은 채로 저장되고, 이에 따라 블록체인 네트워크의 모든 참가자에게 가시적이다. 블록체인 네트워크의 참가자는 자신의 스마트 계약들을 작성 및 게시(publish)할 수 있으며, 일반적으로 블록체인 네트워크에 이미 배포된 스마트 계약들을 호출할 수도 있다. 스마트 계약들에 사용될 수 있는 명령들의 세트는 일반적으로 튜링 컴플릿(Turing complete)이기 때문에, 스마트 계약들은 상이한 비즈니스 시나리오들을 지원하기 위해 복잡한 로직을 지원할 수 있다.
스마트 계약들의 복잡성은 보안 위험들을 야기할 수 있다. 스마트 계약들의 보안 위험들은 종종, 이들이 영향을 미칠 수 있는 계정(account)들의 모음에서 비롯된다. 공격자들은 배포된 스마트 계약들의 취약점들을 악용하여, 스마트 계약에 의해 제어되는 자금들을 공격자의 계정으로 리디렉트(redirect)하는 트랜잭션을 구성할 수 있다. 스마트 계약들과 연관된 이러한 보안 위험들을 해결하는 솔루션이 유리할 것이다.
본 명세서의 구현들은 스마트 계약들을 위한 계정 화이트리스트를 시행하기 위한 컴퓨터 구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현들은, 어느 계정들이 스마트 계약을 호출할 수 있는지를 지정하는 화이트리스트를 스마트 계약의 생성자가 정의할 수 있게 하기 위한 기술에 관한 것이다.
일부 구현들에서, 액션들은, 블록체인 네트워크의 노드에 의해, 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하라는 요청을 식별하는 단계 ― 요청은 스마트 계약을 실행하도록 요청하는 요청 계정을 식별함 ― ; 노드에 의해, 스마트 계약과 연관된 블록체인으로부터 화이트리스트(whitelist)를 리트리브(retrieving)하는 단계 ― 화이트리스트는 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별함 ― ; 노드에 의해, 요청 계정이 화이트리스트에 포함되는 것에 기초하여, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 단계; 및 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 노드에 의해, 스마트 계약을 실행하는 단계를 포함한다. 다른 구현들은 컴퓨터 저장 디바이스들 상에 인코딩된 방법들의 액션들을 수행하도록 구성되는, 대응하는 시스템들, 장치 및 컴퓨터 프로그램들을 포함한다.
이들 및 다른 구현들은 선택적으로 다음의 특징들 중 하나 이상을 각각 포함할 수 있다.
일부 경우들에서, 요청은 제 1 요청이고, 요청 계정은 제 1 계정이며, 방법은, 노드에 의해, 제 1 요청과 상이한, 스마트 계약을 실행하라는 제 2 요청을 식별하는 단계 ― 제 2 요청은 제 1 계정과 상이한 제 2 계정을 식별함 ― ; 노드에 의해, 제 2 계정이 화이트리스트에 포함되지 않는 것에 기초하여, 제 2 계정이 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 단계; 및 제 2 계정이 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것에 응답하여, 노드에 의해, 스마트 계약을 실행하라는 제 2 요청을 거절하는 단계를 포함한다.
일부 구현들에서, 화이트리스트는 스마트 계약과 연관된 실행 가능한 명령들의 세트 내에 포함된다.
일부 경우들에서, 화이트리스트는 스마트 계약과 연관된 실행 가능한 명령들의 세트와 별개이다.
일부 구현들에서, 화이트리스트는 스마트 계약에 액세스하도록 인가된 하나 이상의 계정의 ID(identification)을 포함한다.
일부 경우들에서, 화이트리스트는 스마트 계약에 액세스하도록 인가된 하나 이상의 계정을 저장하는, 스마트 계약 외부의 위치에 대한 참조를 포함한다.
일부 경우들에서, 화이트리스트는 하나 이상의 계정과 연관된 엔티티를 식별하고, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 단계는 요청 계정이 엔티티와 연관되는지 여부를 결정하는 단계를 포함한다.
본 명세서는 또한, 하나 이상의 프로세서들에 커플링되고 명령들이 저장되어 있는 하나 이상의 비일시적인 컴퓨터 판독 가능한 저장 매체들을 제공하며, 이 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 본원에서 제공된 방법들의 구현들에 따른 동작들을 수행하게 한다.
본 명세서는 추가로, 본원에서 제공된 방법들을 구현하기 위한 시스템을 제공한다. 시스템은, 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 커플링되고 명령들이 저장되어 있는 컴퓨터-판독 가능 저장 매체를 포함하며, 이 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 본원에서 제공된 방법들의 구현들에 따라 동작들을 수행하게 한다.
본 명세서에 따른 방법들은 본원에서 설명된 양상들 및 특징들의 임의의 조합을 포함할 수 있다는 것이 인지된다. 즉, 본 명세서에 따른 방법들은 본원에서 구체적으로 설명된 양상들 및 특징들의 조합들로 제한되는 것이 아니라, 제공되는 양상들 및 특징들의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 구현들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기술된다. 본 명세서의 다른 특징들 및 이점들은, 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1은 본 명세서의 구현들을 실행하는데 사용될 수 있는 환경의 예를 도시한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처의 예를 도시한다
도 3은 본 명세서의 구현에 따라 스마트 계약 화이트리스트를 가능하게 하기 위한 환경의 예를 도시한다.
도 4는 본 명세서의 구현들에 따라 실행될 수 있는 신호 흐름의 예를 도시한다.
도 5는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스의 예를 도시한다.
도 6은 본 명세서의 구현들에 따른 장치의 모듈들의 예들을 도시한다.
다양한 도면들 내의 유사한 참조 기호들은 유사한 엘리먼트들을 표시한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처의 예를 도시한다
도 3은 본 명세서의 구현에 따라 스마트 계약 화이트리스트를 가능하게 하기 위한 환경의 예를 도시한다.
도 4는 본 명세서의 구현들에 따라 실행될 수 있는 신호 흐름의 예를 도시한다.
도 5는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스의 예를 도시한다.
도 6은 본 명세서의 구현들에 따른 장치의 모듈들의 예들을 도시한다.
다양한 도면들 내의 유사한 참조 기호들은 유사한 엘리먼트들을 표시한다.
본 명세서의 구현들은 스마트 계약들을 위한 계정 화이트리스트를 시행하기 위한 컴퓨터 구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현들은, 어느 계정들이 스마트 계약을 호출할 수 있는지를 지정하는 화이트리스트를 스마트 계약의 생성자가 정의할 수 있게 하기 위한 기술에 관한 것이다.
본 명세서의 구현들에 대한 추가의 맥락을 제공하기 위해 그리고 위에서 소개된 바와 같이, 컨센서스 네트워크들(예를 들어, 피어-투-피어 노드들로 구성됨), 및 블록체인 네트워크로서 또한 지칭될 수 있는 DSL(distributed ledger system)들은, 참여 엔티티들이 안전하고 불변적으로 트랜잭션들을 수행하고 데이터를 저장하는 것을 가능하게 한다. 블록체인이라는 용어는 본원에서 임의의 특정 사용 경우와 관계없이 DLS를 일반적으로 지칭하기 위해 사용된다.
블록체인은 트랜잭션들이 불변적인(immutable) 방식으로 트랜잭션들을 저장하고 후속적으로 검증될 수 있는 데이터 구조이다. 블록체인은 하나 이상의 블록들을 포함한다. 체인 내의 각각의 블록은 이전 블록의 암호화 해시(cryptographic hash)를 포함함으로써 체인 내에 자신 바로 앞의 이전 블록에 링크된다. 각각의 블록은 또한 타임스탬프, 자체 암호화 해시 및 하나 이상의 트랜잭션들을 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된 트랜잭션들은 해시되고 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프 노드들의 데이터가 해시되고 트리의 각각의 분기(branch)의 모든 해시들이 분기의 루트에서 연접되는 데이터 구조이다. 이 프로세스는 전체 트리의 루트까지 트리에서 계속되며, 트리의 모든 데이터를 나타내는 해시를 저장한다. 트리에 저장된 트랜잭션인 것으로 간주되는 해시는 그것이 트리의 구조와 일치하는지 여부를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션들을 저장하기 위한 데이터 구조인 반면, 블록체인 네트워크는 하나 이상의 블록체인들을 관리, 업데이트 및 유지(maintain)하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개된 바와 같이, 블록체인 네트워크는 공개 블록체인 네트워크, 개인 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다.
일반적으로 컨소시엄 블록체인 네트워크는 참여 엔티티들 사이에서 비공개(private)이다. 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는 노드들의 인가된 세트에 의해 제어되며, 하나 이상의 노드들은 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 동작된다. 예를 들어, 10개의 엔티티들(예를 들어, 금융 기관들, 보험 회사들)의 컨소시엄은 컨소시엄 블록체인 네트워크를 동작시킬 수 있으며, 이들 각각은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 동작시킨다. 따라서, 컨소시엄 블록체인 네트워크는 참여 엔티티들과 관련하여 개인 네트워크로 간주될 수 있다. 일부 예들에서, 각각의 엔티티(노드)는, 블록이 유효하며 블록체인에 추가되기 위해 각각의 모든 블록에 서명해야 한다. 일부 예들에서, 블록이 유효하며 블록체인에 추가되기 위해 적어도 엔티티들(노드들)의 서브세트(예를 들어, 적어도 7개의 엔티티들)가 각각의 모든 블록에 서명해야 한다.
그러나, 본 명세서의 구현들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 고려된다.
본 명세서의 구현들은 위의 맥락을 고려하여 본원에서 추가로 상세히 설명된다. 보다 구체적으로, 그리고 위에서 소개된 바와 같이, 본 명세서의 구현들은, 어느 계정들이 스마트 계약을 호출할 수 있는지를 지정하는 화이트리스트를 스마트 계약의 생성자가 정의할 수 있게 하기 위한 기술에 관한 것이다.
일반적으로, 스마트 계약은 블록체인에 저장되고 블록체인 네트워크의 노드들에 의해 실행되는 하나 이상의 컴퓨터 명령들의 세트이다. 스마트 계약을 위한 코드는 일반적으로, 블록체인 네트워크의 노드들에 의해 실행 가능한 형태(예를 들어, 바이트코드(bytecode))로 변환되고, 바이트코드 그 자체 또는 스마트 계약 바이트코드를 리트리브하도록 구성된 바이트코드가 블록체인에 저장된다. 그 후, 스마트 계약 코드에 정의된 함수들은 블록체인 네트워크의 참가자들에 의해 호출되어, 노드들이 호출된 함수의 명령들을 실행하게 한다.
본 명세서는 스마트 계약의 생성자가, 스마트 계약을 호출하도록 허용되는, 블록체인 네트워크 내의 계정들의 리스트(화이트리스트)를 지정할 수 있게 하는 기술들을 설명한다. 블록체인 네트워크의 참가자가 블록체인 네트워크에 의해 관리하는 블록체인에 배포된 스마트 계약을 호출할 때, 참가자는 호출(call)의 일부로서 계정을 제공한다. 블록체인 네트워크는 참가자의 계정에 대해 스마트 계약과 연관된 화이트리스트를 체크한다. 참가자의 계정이 화이트리스트에 있는 경우, 블록체인 네트워크가 스마트 계약 호출을 실행한다. 참가자의 계정이 화이트리스트에 있지 않은 경우, 블록체인 네트워크가 스마트 계약 호출을 실행하지 않는다. 블록체인 네트워크는 또한 참가자가 스마트 계약에 액세스하는데 실패한 시도의 레코드(record)를 저장할 수 있다.
도 1은 본 명세서의 구현들을 실행하는데 사용될 수 있는 환경(100)의 예를 도시한다. 일부 예들에서, 환경(100)은 엔티티들이 블록체인 네트워크(102)에 참여하는 것을 가능하게 한다. 환경(100)은 컴퓨팅 디바이스들(106, 108) 및 네트워크(110)를 포함한다. 일부 예에서, 네트워크(110)는 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷 또는 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스들(예를 들어, 컴퓨팅 디바이스들) 및 백-엔드 시스템들을 연결한다. 일부 예들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 일부 예들에서, 네트워크(110)는 블록체인 네트워크(102)와 그리고 그 내부의 통신을 가능하게 한다. 일반적으로, 네트워크(110)는 하나 이상의 통신 네트워크들을 나타낸다. 일부 경우들에서, 컴퓨팅 디바이스(106, 108)는 클라우드 컴퓨팅 시스템(도시되지 않음)의 노드들일 수 있거나, 또는 각각의 컴퓨팅 디바이스(106, 108)는 분산된 프로세싱 시스템으로서 기능하고 네트워크에 의해 상호연결된 복수의 컴퓨터들을 포함하는 별개의 클라우드 컴퓨팅 시스템일 수 있다.
도시된 예에서, 컴퓨팅 시스템들(106, 108)은 각각 블록체인 네트워크(102)에서 노드로서 참여할 수 있는 임의의 적절한 컴퓨팅 시스템을 포함할 수 있다. 컴퓨팅 디바이스들의 예들은 제한 없이, 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스 및 스마트 폰을 포함한다. 일부 예들에서, 컴퓨팅 시스템들(106, 108)은 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터 구현 서비스들을 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제 1 엔티티(예를 들어, 참가자 A)가 하나 이상의 다른 엔티티들(예를 들어, 다른 참가자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 1 엔티티의 컴퓨터 구현 서비스들을 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제 2 엔티티(예를 들어, 참가자 B)가 하나 이상의 다른 엔티티들(예를 들어, 다른 참가자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 2 엔티티의 컴퓨터 구현 서비스들을 호스팅할 수 있다. 도 1의 예에서, 블록체인 네트워크(102)는 노드의 피어-투-피어 네트워크로서 표현되고, 컴퓨팅 시스템들(106, 108)은 블록체인 네트워크(102)에 참여하는 제 1 엔티티 및 제 2 엔티티의 노드들을 각각 제공한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처(200)의 예를 도시한다 개념적 아키텍처(200)의 예들은 참가자 A, 참가자 B 및 참가자 C에 각각 대응하는 참가자 시스템들(202, 204, 206)을 포함한다. 각각의 참가자(예를 들어, 사용자, 기업)는 복수의 노드들(214)(이들 중 적어도 일부는 블록체인(216)에 정보를 불변적으로 레코드함)을 포함하는 피어-투-피어 네트워크로서 제공된 블록체인 네트워크(212)에 참여한다. 단일 블록체인(216)이 블록체인 네트워크(212) 내에서 개략적으로 도시되어 있지만, 본원에서 더 상세히 설명되는 바와 같이, 블록체인(216)의 다수의 사본들이 제공되고 블록체인 네트워크(212)를 통해 유지된다.
도시된 예에서, 각각의 참가자 시스템(202, 204, 206)은 각각 참가자 A, 참가자 B 및 참가자 C에 의해 제공되거나 이를 대신하며, 블록체인 네트워크 내에서 각각의 노드(214)로서 기능한다. 본원에서 사용되는 바와 같은 노드는 일반적으로 블록체인 네트워크(212)에 연결되고 각각의 참가자가 블록체인 네트워크에 참여하는 것을 가능하게 하는 개별 시스템(예를 들어, 컴퓨터, 서버)을 지칭한다. 도 2의 예에서, 참가자는 각각의 노드(214)에 대응한다. 그러나 참가자는 블록체인 네트워크(212) 내에서 다수의 노드들(214)을 동작시킬 수 있고 그리고/또는 다수의 참가자들은 노드(214)를 공유할 수 있는 것으로 고려된다. 일부 예들에서, 참가자 시스템들(202, 204, 206)은 프로토콜(예를 들어, HTTPS(hypertext transfer protocol secure))을 사용하여 그리고/또는 RPC(remote procedure call)들을 사용하여 블록체인 네트워크(212)와 통신하거나 블록체인 네트워크(212)를 통해 통신한다.
노드들(214)은 블록체인 네트워크(212) 내에서 다양한 참여도들을 가질 수 있다. 예를 들어, 일부 노드들(214)은 (예를 들어, 블록체인(216)에 블록을 추가하는 마이너(miner) 노드로서) 컨센서스 프로세스에 참여할 수 있는 반면, 다른 노드들(214)은 컨센서스 프로세스에 참여하지 않는다. 다른 예로서, 일부 노드들(214)은 블록체인(216)의 완전한 사본을 저장하는 반면, 다른 노드들(214)은 블록체인(216)의 단지 일부의 사본만을 저장한다. 예를 들어, 데이터 액세스 특권들은 각각의 참가자가 자신의 각각의 시스템 내에 저장하는 블록체인 데이터를 제한할 수 있다. 도 2의 예에서, 참가자 시스템들(202, 204, 206)은 블록체인(216)의 각각의 완전한 사본들(216', 216'', 216''')을 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))은 블록들의 체인으로 구성되며, 각각의 블록은 데이터를 저장한다. 데이터의 예들은 둘 이상의 참가자들 간의 트랜잭션을 나타내는 트랜잭션 데이터를 포함한다. 트랜잭션들이 비-제한적인 예로서 본원에서 사용되지만, 임의의 적절한 데이터가 블록체인(예를 들어, 문서들, 이미지들, 비디오들, 오디오)에 저장될 수 있는 것으로 고려된다. 트랜잭션들의 예들은 제한 없이, 가치있는 것(예를 들어, 자산들, 제품들, 서비스들)의 교환들을 포함한다. 트랜잭션 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 트랜잭션 데이터를 변경할 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터가 해시된다. 해싱은 (문자열 데이터로서 제공된)트랜잭션 데이터를 고정-길이 해시 값(문자열 데이터로서 또한 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위해 해시 값을 언-해시(un-hash)하는 것을 가능하지 않다. 해싱은, 트랜잭션 데이터의 아주 약간의 변화가 완전히 상이한 해시 값을 발생시키는 것을 보장한다. 또한 그리고 위에서 언급된 바와 같이, 해시 값은 고정 길이이다. 즉, 트랜잭션 데이터의 크기에 관계없이, 해시 값의 길이는 고정된다. 해싱은, 해시 값을 생성하기 위해 해시 함수를 통해 트랜잭션 데이터를 프로세싱하는 것을 포함한다. 해시 함수의 예들은 제한 없이, 256-비트 해시 값들을 출력하는 SHA(secure hash algorithm)-256을 포함한다.
다수의 트랜잭션들의 트랜잭션 데이터가 해시되고 블록에 저장된다. 예를 들어, 두 트랜잭션들의 해시 값들이 제공되며 자체로 해시되어 다른 해시를 제공한다. 블록에 저장될 모든 트랜잭션들에 대해, 단일 해시 값이 제공될 때까지 이 프로세스가 반복된다. 이 해시 값은 머클(Merkle) 루트 해시로서 지칭되며, 블록의 헤더에 저장된다. 트랜잭션들 중 임의의 것에서의 변화는 그의 해시 값의 변화, 및 궁극적으로 머클 루트 해시의 변화를 초래할 것이다.
블록들은 컨센서스 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 다수의 노드들은 컨센서스 프로토콜에 참여하고 블록체인에 블록을 추가하기 위해 경쟁한다. 이러한 노드들은 마이너들(또는 마인더 노드)로서 지칭된다. 위에서 소개된 POW가 비-제한적인 예로서 사용된다.
마이너 노드들은 컨센서스 프로세스를 실행하여 블록체인에 트랜잭션들을 추가한다. 다수의 마이너 노드들이 컨센서스 프로세스에 참여하지만, 단 하나의 마이너 노드만이 블록을 블록체인에 기록할 수 있다. 즉, 마이너 노드는 컨센서스 프로세스에서 경쟁하여 자신의 블록이 블록체인에 추가되게 한다. 더 상세하게, 마이너 노드는 트랜잭션 풀로부터 (예를 들어, 만약 있다면, 블록에 포함될 수 있는 트랜잭션들의 수에 관한 미리 정의된 제한까지) 보류중인 트랜잭션들을 주기적으로 수집한다. 트랜잭션 풀은 블록체인 네트워크의 참가자로부터의 트랜잭션 메시지들을 포함한다. 마이너 노드는 블록을 구성하고 트랜잭션들을 블록에 추가한다. 트랜잭션들을 블록에 추가하기 전에, 마이너 노드는 트랜잭션들 중 임의의 것이 블록체인의 블록에 이미 포함되어 있는지를 검사한다. 트랜잭션이 다른 블록에 이미 포함된 경우, 트랜잭션이 폐기된다.
마이너 노드는 블록 헤더를 생성하고, 블록의 모든 트랜잭션들을 해시하고, 블록의 모든 트랜잭션들에 대해 단일 해시 값이 제공될 때까지(머클 루트 해시) 추가의 해시 값을 생성하도록 쌍들의 해시 값을 결합한다. 이 해시는 블록 헤더에 추가된다. 마이너는 또한 블록체인에서 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 결정한다. 마이너 노드는 또한 넌스(nonce) 값 및 타임스탬프를 블록 헤더에 추가한다. 마이닝 프로세스에서, 마이너 노드는 필요한 파라미터들을 충족하는 해시 값을 발견하도록 시도한다. 마이너 노드는 필요한 파라미터들을 충족하는 해시 값을 발견할 때까지 넌스 값을 계속 변경한다.
블록체인 네트워크의 각각의 모든 마이너는 필요한 파라미터들을 충족하는 해시 값을 발견하도록 시도하며, 이러한 방식으로 서로 경쟁한다. 결국, 마이너 노드들 중 하나는 필요한 파라미터들을 충족하는 해시 값을 발견하고 이를 블록체인 네트워크 내의 다른 모든 마이너 노드에 공고한다. 다른 마이너 노드들은 해시 값을 검증하고 올바른 것으로 결정되는 경우, 블록의 각각의 트랜잭션을 검증하고 블록을 수락하고, 블록을 블록체인의 자신의 사본에 덧붙인다. 이러한 방식으로, 블록체인의 글로벌 상태는 블록체인 네트워크 내의 모든 마이너 노드들에 걸쳐 일관된다. 위에서 설명된 프로세스는 POW 컨센서스 프로토콜이다.
비-제한적인 예가 도 2를 참조하여 제공된다. 이 예에서, 참가자 A는 참가자 B에게 금액을 전송하고자 한다. 참가자 A는 트랜잭션 메시지(예를 들어, 발신자, 수취자 및 가치 필드들을 포함함)를 생성하고 트랜잭션 메시지를 블록체인 네트워크에 전송하며, 이는 트랜잭션 메시지를 트랜잭션 풀에 추가한다. 블록체인 네트워크 내의 각각의 마이너 노드는 블록을 생성하고, 트랜잭션 풀로부터 (예를 들어, 만약 있다면, 블록에 추가될 수 있는 트랜잭션들의 수에 관한 미리 정의된 한계까지) 모든 트랜잭션들을 취하고, 트랜잭션들을 블록에 추가한다. 이러한 방식으로, 참가자 A에 의해 게시된 트랜잭션은 마이너 노드들의 블록들에 추가된다.
일부 블록체인 네트워크들에서, 암호화가 구현되어 트랜잭션의 프라이버시를 유지한다. 예를 들어, 두 노드들이 트랜잭션을 비공개로 유지하고자 하여서, 블록체인 네트워크 내의 다른 노드들이 트랜잭션의 세부사항을 구별할 수 없게 하는 경우, 노드들은 트랜잭션 데이터를 암호화할 수 있다. 암호화 방법들의 예들은 제한 없이, 대칭 암호화 및 비대칭 암호화를 포함한다. 대칭 암호화는 암호화(평문으로부터 암호문을 생성함) 및 복호화(암호문으로부터 평문을 생성함) 둘 모두에 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 동일한 키를 다수의 노드들이 이용 가능하여서, 각각의 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 개인 키와 공개 키를 각각 포함하는 키 쌍들을 사용하며, 개인 키는 각각의 노드에만 알려지고 공개 키는 블록체인 네트워크 내의 임의의 또는 모든 다른 노드들에 알려진다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있으며 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화될 수 있다. 예를 들어, 그리고 도 2를 다시 참조하면, 참가자 A는 참가자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참가자 B에게 전송할 수 있다. 참가자 B는 자신의 개인 키를 이용하여 암호화된 데이터(암호문)를 복호화하고 오리지널 데이터(평문)를 추출한다. 노드의 공개 키로 암호화된 메시지는 노드의 개인 키를 이용해서만 복호화될 수 있다.
비대칭 암호화는 트랜잭션의 유효성 뿐만 아니라, 트랜잭션의 참가자들이 트랜잭션의 다른 참가자들을 확인하는 것을 가능하게 하는 디지털 서명들을 제공하는 데 사용된다. 예를 들어, 노드는 메시지에 디지털로 서명할 수 있고 다른 노드는 참가자 A의 디지털 서명에 기초하여 메시지가 노드에 의해 전송되었음을 확인할 수 있다. 디지털 서명들은 또한 메시지들이 전송 도중에 변조(tamper)되지 않았음을 보장하는 데 사용될 수 있다. 예를 들어, 그리고 도 2를 재차 참조하면, 참가자 A는 참가자 B에 메시지를 전송할 것이다. 참가자 A는 메시지의 해시를 생성하고, 그 후 자신의 개인 키를 이용하여, 해시를 암호화하여 암호화된 해시로서 디지털 서명을 제공한다. 참가자 A는 메시지에 디지털 서명을 덧붙이고 디지털 서명을 한 메시지를 참가자 B에 전송한다. 참가자 B는 참가자 A의 공개 키를 사용하여 디지털 서명을 복호화하고 해시를 추출한다. 참가자 B는 메시지를 해시하고 해시들을 비교한다. 해시들이 동일한 경우, 참가자 B는 메시지가 실제로 참가자 A로부터 왔으며 변조되지 않았음을 확인할 수 있다.
도 3은 본 명세서의 구현에 따라 스마트 계약 화이트리스트를 가능하게 하기 위한 환경(300)의 예를 도시한다. 도시된 바와 같이, 스마트 계약(302)은 도 2의 블록체인 네트워크(212)의 블록체인(216)에 저장된다. 스마트 계약(302)은 명령들(304) 및 화이트리스트(306)를 포함한다. 화이트리스트(306)는 하나 이상의 계정(308)을 포함한다.
위에서 설명된 바와 같이, 스마트 계약(302)은 블록체인(216)에 저장된다. 블록체인 네트워크(212)의 참가자들은 스마트 계약(302)을 호출할 수 있으며, 이는 블록체인 네트워크(212)의 노드들(214)이 명령들(304)을 실행하게 할 수 있다. 일부 구현들에서, 블록체인 네트워크의 노드들(214)은 스마트 계약의 호출자에 의해 지정된 계정이 화이트리스트(306)에 의해 지정된 하나 이상의 계정(308)에 포함되는지 여부를 체크할 것이다. 계정이 화이트리스트(306)에 있는 경우, 노드(214)는 명령들(304)을 실행한다. 계정이 화이트리스트(306)에 있지 않은 경우, 노드(214)는 명령들(304)을 실행하지 않는다.
일부 구현들에서, 명령들(304)은 예를 들어 Solidity, Serpent, LLL, Viper, Mutan, C, C++, Python, Java, Javascript 또는 다른 프로그래밍 언어들과 같이, 블록체인 네트워크(212)의 노드들(214)에 의해 지원되는 고레벨 프로그래밍 언어로 작성된 소프트웨어 코드일 수 있다 명령들(304)은 또한 스마트 계약(302)과 연관된 소프트웨어 코드로부터 생성된 컴파일된 바이트코드일 수 있다.
일부 구현들에서, 화이트리스트(306) 및 계정들(308)은 스마트 계약(302)과 함께 블록체인(216)에 저장된다. 일부 경우들에서, 화이트리스트(306) 및 계정들(308)은 스마트 계약(302)의 명령들(304) 내에 포함된다. 예를 들어, 화이트리스트(306)는 사전-프로세서 명령 또는 특수하게 포맷팅된 주석과 같이 명령들(304) 내의 지시문에 포함될 수 있다. 화이트리스트(306)는 또한 함수 데코레이터(function decorator)와 같이 스마트 계약을 작성하는데 사용된 프로그래밍 언어 특유의 구조를 사용하여 포함될 수 있다. 화이트리스트(306)는 또한 명령들(304) 내의 실행 가능한 명령에서 지정될 수 있다. 일부 구현들에서, 화이트리스트(306)는 노드들(214) 이 명령들(304)을 실행하기 전에 검사된다. 화이트리스트(306)가 실행 가능한 명령에 포함되는 경우와 같은 일부 경우에서, 노드들(214)은 화이트리스트(306)를 평가하기 전에 명령들(304)의 실행을 시작할 수 있다. 예를 들어, 스마트 계약(302)은 호출자의 계정을 파라미터로서 취하고 화이트리스트(306)에 기초하여 호출자가 스마트 계약을 호출하도록 인가되었음을 검증하는 명령들(304)로 정의된 개인 함수를 포함할 수 있다. 이러한 함수는 스마트 계약(302)이 실행될 때 자동으로 호출될 수 있고, 호출자의 계정이 계약을 실행하도록 인가되지 않은 경우, 스마트 계약(302)은 단순히 종료될 수 있다. 일부 경우들에서, 스마트 계약(302)을 실행하는 노드(214)는 개인 함수를 호출하여 화이트리스트(306)를 체크할 수 있고, 호출자의 계정이 스마트 계약(302)을 실행하도록 인가되었음을 개인 함수에 대한 호출이 표시하는 경우에만, 스마트 계약(302)의 메인 함수를 실행할 수 있다.
도 4는 본 명세서의 구현들에 따라 실행될 수 있는 신호 흐름(400)의 예를 도시한다. 도시된 바와 같이, 블록체인 네트워크의 참가자(402)는 블록체인 노드(404)와 통신한다. 블록체인 노드(404)는 블록체인 네트워크에 의해 관리되는 블록체인에 저장된 스마트 계약(302)으로부터 정보를 판독한다.
406에서, 참가자(402)는 스마트 계약(302)에 대한 호출을 생성한다. 호출은 참가자(402)와 연관된 계정의 식별을 포함한다. 일부 구현들에서, 참가자(402)는 목적지 계정으로서 스마트 계약(302)과 관련하여 트랜잭션을 블록체인 네트워크에 제출함으로써 스마트 계약(302)을 호출한다. 그러한 경우에, 블록체인 노드(404)는 스마트 계약(302)에 대한 호출로서 이 트랜잭션을 인지할 것이고 신호 흐름(400)의 잔여부를 수행할 것이다.
408에서, 블록체인 노드(404)는 스마트 계약(302)에 대한 계약 화이트리스트(예를 들어, 306)를 리트리브한다. 예를 들어, 블록체인 노드(404)는 스마트 계약(302)이 저장된 블록체인 내의 위치로부터 화이트리스트를 리트리브할 수 있다.
410에서, 블록체인 노드(404)는 참가자(404)에 의해 제공된 계정이 스마트 계약(302)에 대한 리트리브된 화이트리스트에 포함되는지를 결정한다. 이 프로세스는 도 3과 관련하여 위에서 설명되었다. 계정이 화이트리스트에 포함된 것으로 블록체인 노드(404)가 결정하는 경우, 신호 흐름(400)은 412로 이어지고, 블록체인 노드(404)는 스마트 계약(302)을 실행한다. 계정이 화이트리스트에 포함되지 않은 것으로 블록체인 노드(404)가 결정하는 경우, 신호 흐름(400)은 414로 이어지고, 블록체인 노드(404)는 스마트 계약(302)을 실행하지 않고, 대신에 스마트 계약 호출을 거절한다. 일부 경우들에서, 블록체인 노드(404)는 참가자에게, 스마트 계약 호출이 거절되었음을 통지할 것이다. 블록체인 노드(404)는 또한, 스마트 계약(302)을 실행하는데 실패한 시도를, 블록체인 또는 다른 저장 위치에 레코딩할 수 있다.
도 5는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스(500)의 예를 도시한다. 일부 구현들에서, 프로세스(400)는 하나 이상의 컴퓨팅 디바이스들을 사용하여 실행되는 하나 이상의 컴퓨터-실행 가능 프로그램들을 사용하여 수행될 수 있다.
502에서, 블록체인 네트워크의 노드에 의해, 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하라는 요청이 식별되며, 요청은 스마트 계약을 실행하도록 요청하는 요청 계정을 식별한다.
504에서, 노드들은 스마트 계약과 연관된 블록체인으로부터 화이트리스트를 리트리브하고 화이트리스트는 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별한다. 일부 경우들에서, 화이트리스트는 스마트 계약과 연관된 실행 가능한 명령들의 세트 내에 포함된다. 일부 구현들에서, 화이트리스트는 스마트 계약과 연관된 실행 가능한 명령들의 세트와 별개이다. 화이트리스트는 스마트 계약에 액세스하도록 인가된 하나 이상의 계정의 ID(identification)를 포함할 수 있다. 일부 경우들에서, 화이트리스트는 스마트 계약에 액세스하도록 인가된 하나 이상의 계정을 저장하는, 스마트 계약 외부의 위치에 대한 참조를 포함한다.
506에서, 노드는 요청 계정이 리트리브된 화이트리스트에 포함되는 것에 기초하여, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정한다. 일부 경우들에서, 화이트리스트는 하나 이상의 계정과 연관된 엔티티를 식별하고, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 것은 요청 계정이 엔티티와 연관되는지 여부를 결정하는 것을 포함한다.
508에서, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 노드는 스마트 계약을 실행한다.
일부 경우들에서, 요청은 제 1 요청이고, 요청 계정은 제 1 계정이며, 프로세스(500)는, 제 1 요청과 상이한, 스마트 계약을 실행하라는 제 2 요청을 식별하는 것 ― 제 2 요청은 제 1 계정과 상이한 제 2 계정을 식별함 ― ; 제 2 계정이 리트리브 화이트리스트에 포함되지 않는 것에 기초하여, 제 2 계정이 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것; 그리고 제 2 계정이 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것에 응답하여, 스마트 계약을 실행하라는 제 2 요청을 거절하는 것을 포함한다.
도 6은 본 명세서의 구현들에 따른 장치(600)의 모듈들의 예들을 도시한다. 장치(600)는 컨소시엄 블록체인 네트워크와 같은 블록체인 네트워크에서 스마트 계약에 대한 액세스를 제어하도록 구성된 블록체인 노드일 수 있다. 장치(600)는 위에서 설명된 구현들에 대응할 수 있고, 장치(600)는 다음 즉, 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하라는 요청을 식별하기 위한 식별자 또는 식별 유닛(602) ― 요청은 스마트 계약을 실행하도록 요청하는 요청 계정을 식별함 ― ; 리트리브 노드에 의해, 스마트 계약과 연관된 블록체인으로부터 화이트리스트(whitelist)를 리트리브하기 위한 리트리버 또는 리트리브 유닛(604) ― 화이트리스트는 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별함 ― ; 노드에 의해, 요청 계정이 화이트리스트에 포함되는 것에 기초하여, 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하기 위한 결정자 또는 결정 유닛(606); 및 요청 계정이 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 스마트 계약을 실행하기 위한 실행기 또는 실행 유닛(608)을 포함한다.
이전의 구현들에서 예시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용함으로써 구현될 수 있거나, 또는 소정의 기능을 갖는 제품을 사용함으로써 구현될 수 있다. 통상적인 구현 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트폰, 개인용 디지털 보조기기, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이들 디바이스들의 임의의 조합일 수 있다.
장치 내의 각각의 유닛의 기능들 및 역할들의 구현 프로세스에 대해, 이전 방법에서 대응하는 단계들의 구현 프로세스가 참조될 수 있다. 세부사항들은 여기서 간략화를 위해 생략된다.
장치 구현은 기본적으로 방법 구현에 대응하기 때문에, 관련된 부분들에 대해, 방법 구현에서의 관련된 설명이 참조할 수 있다. 전술한 장치 구현은 단지 예일 뿐이다. 별개의 부분으로서 설명된 유닛은 물리적으로 별개일 수 있거나 또는 그렇지 않을 수 있고, 유닛으로서 디스플레이되는 부분은 물리적 유닛일 수 있거나 또는 그렇지 않을 수 있거나, 또는 하나의 포지션에 위치되거나 또는 다수의 네트워크 유닛 상에 분포될 수 있다. 본 명세서의 솔루션들의 목적들을 달성하기 위해 실제 요구들에 기초하여 모듈들 중 일부 또는 전부가 선택될 수 있다. 당업자는 창조적 노력들 없이 본 출원의 구현들을 이해하고 구현할 수 있다.
다시 도 6을 참조하면, 그것은 블록체인 네트워크에서 스마트 계약들에 대한 액세스를 제어하도록 구성된 블록체인 노드의 내부 기능 모듈 및 구조를 예시하는 것으로서 해석될 수 있다. 블록체인 노드는 블록체인 네트워크에서 스마트 계약들에 대한 액세스를 제어하도록 구성된 장치의 예일 수 있다.
본 명세서에서 설명된 청구대상 액션들 및 동작들의 구현들은, 본 명세서에서 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 디지털 전자 회로로, 유형으로 구체화되는 컴퓨터 소프트웨어로 또는 펌웨어로, 컴퓨터 하드웨어로, 또는 그들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에 설명된 청구대상의 구현들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어들 상에 인코딩된 하나 이상의 컴퓨터 프로그램들, 예를 들어, 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다. 캐리어는 유형의 비-일시적인 컴퓨터 저장 매체일 수 있다. 대안적으로 또는 부가적으로, 캐리어는 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하기 위해 생성되는, 인위적으로 생성된 전파된 신호, 예를 들어, 머신-생성 전기, 광학 또는 전자기 신호일 수 있다. 컴퓨터-저장 매체는 머신-판독 가능 저장 디바이스, 머신-판독 가능 저장 기재, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들의 하나 이상의 조합이거나 그의 부분일 수 있다. 컴퓨터 저장 매체는 전파된 신호는 아니다.
"데이터 프로세싱 장치"라는 용어는 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함해서, 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 머신들을 포함한다. 데이터 프로세싱 장치는 특수-목적 로직 회로, 예를 들어 FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 GPU(graphics processing unit)를 포함할 수 있다. 장치는 또한, 하드웨어 외에도, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드로서 또한 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 인터프리팅된 언어들, 선언형 또는 절차형 언어들을 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며; 그것은 자립형 프로그램로서 또는 모듈로서, 컴포넌트, 엔진, 서브루틴 또는 컴퓨팅 환경에서 실행하기에 적합한 다른 유닛을 포함한 임의의 형태로 배포될 수 있으며, 이 환경은 하나 이상의 위치들에 있는 데이터 통신 네트워크에 의해 상호연결되는 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 대응할 필요는 없을 수 있다. 컴퓨터 프로그램은, 다른 프로그램들 또는 데이터(예를 들어, 마크업 언어 문서에 저장되는 하나 이상의 스크립트들)를 보유하는 파일의 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합된 파일들(예를 들어, 하나 이상의 모듈들, 서브-프로그램 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하고 출력을 생성함으로써 동작들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 컴퓨터에 의해 수행될 수 있다. 프로세스 및 로직 흐름들은 또한 특수-목적 로직 회로, 예를 들어 FPGA, ASIC 또는 GPU, 또는 특수-목적 로직 회로 및 하나 이상의 프로그래밍된 컴퓨터들의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들, 또는 둘 모두 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및/또는 데이터를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령들을 실행하기 위한 중앙 처리 장치 및 명령들 및/또는 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들을 포함할 수 있다. 중앙 처리 장치 및 메모리는 특수-목적 로직 회로에 의해 보완되거나 또는 거기에 통합될 수 있다.
일반적으로, 컴퓨터는 적어도 하나의 비일시적인 컴퓨터 판독 가능한 저장 매체(컴퓨터 판독 가능한 메모리로서 또한 지칭됨)에 커플링될 것이다. 컴퓨터에 커플링된 저장 매체는 컴퓨터의 내부 컴포넌트(예를 들어, 통합된 하드 드라이브) 또는 외부 컴포넌트(예를 들어, 범용 직렬 버스(USB) 하드 드라이브 또는 네트워크를 통해 액세스되는 저장 시스템)일 수 있다. 저장 매체의 예들은 예를 들어, 자기, 자기 광학 또는 광학 디스크들, 솔리드 스테이트 드라이브들, 클라우드 저장 시스템들과 같은 네트워크 저장 자원들, 또는 다른 유형들의 저장 매체를 포함할 수 있다. 그러나 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 몇 개만 언급하면, 모바일 전화, 개인용 디지털 보조기기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기 또는 휴대용 저장 디바이스, 예를 들어 범용 직렬 버스 (USB) 플래시 드라이브에 임베딩될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 청구 대상의 구현들은 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스 예를 들어, LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 입력 디바이스, 예를 들어 키보드 및 포인팅 디바이스, 예를 들어 마우스, 트랙볼 또는 터치패드를 갖는 컴퓨터 상에 구현되거나, 이 컴퓨터와 통신하도록 구성될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백 예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 게다가, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이 디바이스로부터 문서들을 수신함으로써, 예를 들어, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 또는 사용자 디바이스 예를 들어, 스마트폰 또는 전자 태블릿 상에서 실행되는 앱과 상호작용함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지 또는 다른 형태들의 메시지를 개인용 디바이스, 예를 들어 메시징 애플리케이션을 실행하는 스마트 폰에 전송하고 답신으로 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서는 시스템들, 장치 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "~ 하도록 구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 시스템에는, 동작 시에 시스템이 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합이 설치되어 있음을 의미한다. 하나 이상의 컴퓨터 프로그램들이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 하나 이상의 프로그램들이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령들을 포함한다는 것을 의미한다. 특수-목적 로직 회로가 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 회로가 동작들 또는 액션들을 수행하는 전자 로직을 갖는다는 것을 의미한다.
본 명세서가 다수의 특정 구현 세부사항들을 포함하지만, 이들은 청구항들 그 자체들에 의해 정의되는 청구되는 대상의 범위에 관한 제한들로서 해석되어서는 안 되며, 오히려, 특정 구현들에 특유할 수 있는 특징들의 설명들로서 해석되어야 한다. 별개의 구현들의 맥락에서 본 명세서에 설명된 소정의 특징들은 또한, 단일 구현으로 조합하여 실현될 수 있다. 대조적으로, 단일 구현의 맥락에서 설명된 다양한 특징들은 또한, 다수의 구현들에서 개별적으로 또는 임의의 적합한 서브조합으로 실현될 수 있다. 더욱이, 특징들이 소정의 조합들로 작용하는 것으로 위에서 설명되고 심지어 초기에 이와 같이 청구될 수 있지만, 일부 경우들에서, 청구된 조합으로부터의 하나 이상의 특징들은 그 조합으로부터 제거될 수 있고, 청구항은 서브조합 또는 서브조합의 변동과 관련될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되고 청구항들에서 나열되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되지는 않아야 한다. 소정의 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 위에서 설명된 구현에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 구현들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하고, 그리고 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
청구대상의 특정 구현들이 설명되었다. 다른 구현들은 다음의 청구항들의 범위 내에 존재한다. 예를 들어, 청구항들에서 열거된 액션들은, 상이한 순서로 수행될 수 있으며, 그럼에도 불구하고 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.
Claims (20)
- 블록체인 네트워크에서 스마트 계약(smart contract)들에 대한 액세스를 제어하기 위한 컴퓨터 구현(computer-implemented) 방법으로서,
상기 블록체인 네트워크의 노드에 의해, 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약의 개인 함수(private function)를 실행하라는 요청을 식별하는 단계 ― 상기 요청은 상기 스마트 계약을 실행하도록 요청하는 요청 계정의 요청자 식별자를 포함하고, 상기 스마트 계약은 상기 개인 함수와 메인 함수를 포함함 ― ;
상기 노드에 의해, 상기 스마트 계약과 연관된 블록체인으로부터 화이트리스트(whitelist)를 리트리브(retrieve)하기 위해 상기 요청자 식별자를 사용하여 상기 스마트 계약의 상기 개인 함수를 실행하는 단계 ― 상기 화이트리스트는 상기 스마트 계약이 호출되기 전에 미리 정의되고, 상기 화이트리스트는 상기 스마트 계약의 프로그래밍 언어에 특유한 함수 데코레이터(function decorator)를 포함하고, 상기 화이트리스트는 상기 스마트 계약을 실행하도록 인가된 계정들의 식별자들을 저장하는, 상기 스마트 계약 외부의 위치에 대한 참조(reference)를 포함하고, 상기 화이트리스트는 상기 스마트 계약의 상기 메인 함수의 실행 전에 호출되도록 구성됨 -;
상기 노드에 의해, 상기 스마트 계약을 실행하도록 인가된 계정들의 식별자들에 기초하여, 상기 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별하기 위해 상기 스마트 계약과 연관된 상기 화이트리스트를 프로세싱하는 단계;
상기 노드에 의해, 상기 요청 계정의 요청자 식별자가 상기 화이트리스트에 포함되는 것에 기초하여, 상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 단계;
상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 상기 노드에 의해, 트랜잭션 데이터를 생성하기 위해 상기 스마트 계약의 메인 함수를 실행하는 단계
를 포함하는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 요청은 제 1 요청이고, 상기 요청 계정은 제 1 계정이며,
상기 방법은,
상기 노드에 의해, 상기 제 1 요청과 상이한, 상기 스마트 계약을 실행하라는 제 2 요청을 식별하는 단계 ― 상기 제 2 요청은 상기 제 1 계정과 상이한 제 2 계정을 식별함 ― ;
상기 노드에 의해, 상기 제 2 계정이 상기 화이트리스트에 포함되지 않는 것에 기초하여, 상기 제 2 계정이 상기 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 단계; 및
상기 제 2 계정이 상기 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것에 응답하여, 상기 노드에 의해, 상기 스마트 계약을 실행하라는 상기 제 2 요청을 거절하는 단계
를 포함하는, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 화이트리스트는 상기 스마트 계약과 연관된 실행 가능한 명령어들의 세트 내에 포함되는 것인, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 화이트리스트는 상기 스마트 계약과 연관된 실행 가능한 명령어들의 세트와 별개인 것인, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 화이트리스트는 상기 스마트 계약에 액세스하도록 인가된 하나 이상의 계정의 ID(identification)를 포함하는 것인, 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 노드에 의해, 상기 스마트 계약과 연관된 상기 화이트리스트의 프로세싱의 결과에 기초하여 통지(notification)를 생성하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제 1 항에 있어서,
상기 화이트리스트는 하나 이상의 계정과 연관된 엔티티(entity)를 식별하고, 상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 단계는 상기 요청 계정이 상기 엔티티와 연관되는지 여부를 결정하는 단계를 포함하는 것인, 컴퓨터 구현 방법. - 비일시적인 컴퓨터 판독 가능한 저장 매체로서,
상기 비일시적인 컴퓨터 판독 가능한 저장 매체는 블록체인 네트워크에서 스마트 계약(smart contract)들에 대한 액세스를 제어하기 위한 동작들을 수행하도록 컴퓨터 시스템에 의해 실행 가능한 하나 이상의 명령어를 저장하고,
상기 동작들은,
상기 블록체인 네트워크의 노드에 의해, 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약의 개인 함수(private function)를 실행하라는 요청을 식별하는 것 ― 상기 요청은 상기 스마트 계약을 실행하도록 요청하는 요청 계정의 요청자 식별자를 포함하고, 상기 스마트 계약은 상기 개인 함수와 메인 함수를 포함함 ― ;
상기 노드에 의해, 상기 스마트 계약과 연관된 블록체인으로부터 화이트리스트(whitelist)를 리트리브(retrieve)하기 위해 상기 요청자 식별자를 사용하여 상기 스마트 계약의 상기 개인 함수를 실행하는 것 ― 상기 화이트리스트는 상기 스마트 계약이 호출되기 전에 미리 정의되고, 상기 화이트리스트는 상기 스마트 계약의 프로그래밍 언어에 특유한 함수 데코레이터(function decorator)를 포함하고, 상기 화이트리스트는 상기 스마트 계약을 실행하도록 인가된 계정들의 식별자들을 저장하는, 상기 스마트 계약 외부의 위치에 대한 참조(reference)를 포함하고, 상기 화이트리스트는 상기 스마트 계약의 상기 메인 함수의 실행 전에 호출되도록 구성됨 -;
상기 노드에 의해, 상기 스마트 계약을 실행하도록 인가된 계정들의 식별자들에 기초하여, 상기 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별하기 위해 상기 스마트 계약과 연관된 상기 화이트리스트를 프로세싱하는 것;
상기 노드에 의해, 상기 요청 계정의 요청자 식별자가 상기 화이트리스트에 포함되는 것에 기초하여, 상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 것;
상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 상기 노드에 의해, 트랜잭션 데이터를 생성하기 위해 상기 스마트 계약의 메인 함수를 실행하는 것
을 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 제 8 항에 있어서,
상기 요청은 제 1 요청이고, 상기 요청 계정은 제 1 계정이며,
상기 동작들은,
상기 노드에 의해, 상기 제 1 요청과 상이한, 상기 스마트 계약을 실행하라는 제 2 요청을 식별하는 것 ― 상기 제 2 요청은 상기 제 1 계정과 상이한 제 2 계정을 식별함 ― ;
상기 노드에 의해, 상기 제 2 계정이 상기 화이트리스트에 포함되지 않는 것에 기초하여, 상기 제 2 계정이 상기 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것; 및
상기 제 2 계정이 상기 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것에 응답하여, 상기 노드에 의해, 상기 스마트 계약을 실행하라는 상기 제 2 요청을 거절하는 것
을 더 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 제 8 항에 있어서,
상기 화이트리스트는 상기 스마트 계약과 연관된 실행 가능한 명령어들의 세트 내에 포함되는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 제 8 항에 있어서,
상기 화이트리스트는 상기 스마트 계약과 연관된 실행 가능한 명령어들의 세트와 별개인 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 제 8 항에 있어서,
상기 화이트리스트는 상기 스마트 계약에 액세스하도록 인가된 하나 이상의 계정의 ID를 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 제 8 항에 있어서,
상기 동작들은, 상기 노드에 의해, 상기 스마트 계약과 연관된 상기 화이트리스트의 프로세싱의 결과에 기초하여 통지(notification)를 생성하는 것을 더 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 제 8 항에 있어서,
상기 화이트리스트는 하나 이상의 계정과 연관된 엔티티를 식별하고, 상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 것은 상기 요청 계정이 상기 엔티티와 연관되는지 여부를 결정하는 것을 포함하는 것인, 비일시적인 컴퓨터 판독 가능한 저장 매체. - 시스템으로서,
하나 이상의 컴퓨터; 및
상기 하나 이상의 컴퓨터와 상호동작가능하게 커플링되고, 하나 이상의 명령어를 저장하는 유형(tangible)의 비일시적 기계 판독 가능한 매체를 갖는 하나 이상의 컴퓨터 메모리 디바이스
를 포함하고,
상기 하나 이상의 명령어는 상기 하나 이상의 컴퓨터에 의해 실행될 때, 블록체인 네트워크에서 스마트 계약(smart contract)들에 대한 액세스를 제어하기 위한 동작들을 수행하고,
상기 동작들은,
상기 블록체인 네트워크의 노드에 의해, 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약의 개인 함수(private function)를 실행하라는 요청을 식별하는 것 ― 상기 요청은 상기 스마트 계약을 실행하도록 요청하는 요청 계정의 요청자 식별자를 포함하고, 상기 스마트 계약은 상기 개인 함수와 메인 함수를 포함함 ― ;
상기 노드에 의해, 상기 스마트 계약과 연관된 블록체인으로부터 화이트리스트(whitelist)를 리트리브(retrieve)하기 위해 상기 요청자 식별자를 사용하여 상기 스마트 계약의 상기 개인 함수를 실행하는 것 ― 상기 화이트리스트는 상기 스마트 계약이 호출되기 전에 미리 정의되고, 상기 화이트리스트는 상기 스마트 계약의 프로그래밍 언어에 특유한 함수 데코레이터(function decorator)를 포함하고, 상기 화이트리스트는 상기 스마트 계약을 실행하도록 인가된 계정들의 식별자들을 저장하는, 상기 스마트 계약 외부의 위치에 대한 참조(reference)를 포함하고, 상기 화이트리스트는 상기 스마트 계약의 상기 메인 함수의 실행 전에 호출되도록 구성됨 -;
상기 노드에 의해, 상기 스마트 계약을 실행하도록 인가된 계정들의 식별자들에 기초하여, 상기 스마트 계약을 실행하도록 인가된 하나 이상의 계정을 식별하기 위해 상기 스마트 계약과 연관된 상기 화이트리스트를 프로세싱하는 것;
상기 노드에 의해, 상기 요청 계정의 요청자 식별자가 상기 화이트리스트에 포함되는 것에 기초하여, 상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 것;
상기 요청 계정이 상기 스마트 계약을 실행하도록 인가되었다고 결정하는 것에 응답하여, 상기 노드에 의해, 트랜잭션 데이터를 생성하기 위해 상기 스마트 계약의 메인 함수를 실행하는 것
을 포함하는 것인, 시스템. - 제 15 항에 있어서,
상기 요청은 제 1 요청이고, 상기 요청 계정은 제 1 계정이며,
상기 동작들은,
상기 노드에 의해, 상기 제 1 요청과 상이한, 상기 스마트 계약을 실행하라는 제 2 요청을 식별하는 것 ― 상기 제 2 요청은 상기 제 1 계정과 상이한 제 2 계정을 식별함 ― ;
상기 노드에 의해, 상기 제 2 계정이 상기 화이트리스트에 포함되지 않는 것에 기초하여, 상기 제 2 계정이 상기 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것; 및
상기 제 2 계정이 상기 스마트 계약을 실행하도록 인가되지 않았다고 결정하는 것에 응답하여, 상기 노드에 의해, 상기 스마트 계약을 실행하라는 상기 제 2 요청을 거절하는 것
을 더 포함하는 것인, 시스템. - 제 15 항에 있어서,
상기 화이트리스트는 상기 스마트 계약과 연관된 실행 가능한 명령어들의 세트 내에 포함되는 것인, 시스템. - 제 15 항에 있어서,
상기 화이트리스트는 상기 스마트 계약과 연관된 실행 가능한 명령어들의 세트와 별개인 것인, 시스템. - 제 15 항에 있어서,
상기 화이트리스트는 상기 스마트 계약에 액세스하도록 인가된 하나 이상의 계정의 ID를 포함하는 것인, 시스템. - 제 15 항에 있어서,
상기 동작들은, 상기 노드에 의해, 상기 스마트 계약과 연관된 상기 화이트리스트의 프로세싱의 결과에 기초하여 통지(notification)를 생성하는 것을 더 포함하는 것인, 시스템.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/124852 WO2019072304A2 (en) | 2018-12-28 | 2018-12-28 | WHITE LISTS OF INTELLIGENT CONTRACTS |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200083939A KR20200083939A (ko) | 2020-07-09 |
KR102222612B1 true KR102222612B1 (ko) | 2021-03-08 |
Family
ID=66100024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197023255A KR102222612B1 (ko) | 2018-12-28 | 2018-12-28 | 스마트 계약 화이트리스트 |
Country Status (14)
Country | Link |
---|---|
US (3) | US10832239B2 (ko) |
EP (1) | EP3577853B1 (ko) |
JP (1) | JP6858264B2 (ko) |
KR (1) | KR102222612B1 (ko) |
CN (1) | CN110366729A (ko) |
AU (1) | AU2018347204B2 (ko) |
BR (1) | BR112019016188A2 (ko) |
CA (1) | CA3052735C (ko) |
MX (1) | MX2019009285A (ko) |
PH (1) | PH12019501831A1 (ko) |
RU (1) | RU2744827C2 (ko) |
SG (1) | SG11201907155UA (ko) |
WO (1) | WO2019072304A2 (ko) |
ZA (1) | ZA201905193B (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6858264B2 (ja) | 2018-12-28 | 2021-04-14 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | スマートコントラクトのホワイトリスト |
EP3635941A4 (en) * | 2019-04-30 | 2020-04-29 | Alibaba Group Holding Limited | METHOD AND DEVICES FOR MANAGING ACCESS TO ACCOUNTS IN A BLOCKCHAIN SYSTEM |
CN111164935B (zh) * | 2019-05-31 | 2023-08-22 | 创新先进技术有限公司 | 在基于区块链的私有交易中提供隐私和安全保护的系统和方法 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN110688428B (zh) * | 2019-09-24 | 2021-01-26 | 北京海益同展信息科技有限公司 | 用于发布智能合约的方法和装置 |
CN111222109A (zh) * | 2019-11-21 | 2020-06-02 | 腾讯科技(深圳)有限公司 | 一种区块链账户的操作方法、节点设备及存储介质 |
CN113282887A (zh) * | 2020-02-19 | 2021-08-20 | 北京沃东天骏信息技术有限公司 | 用户信息授权的方法和装置 |
CN111310233B (zh) * | 2020-03-24 | 2024-06-25 | 腾讯科技(深圳)有限公司 | 应用界面显示方法、装置、设备以及存储介质 |
CN111339208B (zh) * | 2020-05-15 | 2020-08-25 | 支付宝(杭州)信息技术有限公司 | 调用智能合约的方法及装置 |
CN112804341A (zh) * | 2020-09-05 | 2021-05-14 | 蔡春梅 | 基于云计算和区块链服务的数据处理方法及数据处理系统 |
US20230367764A1 (en) * | 2020-09-11 | 2023-11-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Partial execution of transactions in private distributed ledger networks |
US11836714B2 (en) * | 2021-07-07 | 2023-12-05 | Ava Labs, Inc. | Secure and trustworthy bridge for transferring assets across networks with different data architecture |
KR102571542B1 (ko) * | 2021-10-27 | 2023-08-29 | 한국전력공사 | 외부자의 참여가 가능한 폐쇄망 블록체인 시스템 및 폐쇄망 블록체인 시스템에서 외부 참여인의 업무 처리 방법 |
US11954215B1 (en) * | 2022-11-21 | 2024-04-09 | Real Title Block, Llc | System and method for security suite concatenating validation elements for blockchain binding operations |
CN116132112B (zh) * | 2022-12-22 | 2024-05-03 | 广州大学 | 一种基于联盟链智能合约的关键字可加密搜索方法 |
CN116132144A (zh) * | 2023-01-05 | 2023-05-16 | 合肥联正电子科技有限公司 | 一种基于智能合约技术的物联网传输方法和系统 |
CN116226938B (zh) * | 2023-05-10 | 2023-08-08 | 飞天诚信科技股份有限公司 | 一种通过智能合约管理事务的实现方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101878869B1 (ko) * | 2017-11-17 | 2018-08-16 | 주식회사 미탭스플러스 | 블록체인 기반의 사용자 식별 관리를 위한 분산 원장 장치 및 분산 원장 방법 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490237B1 (en) * | 2003-06-27 | 2009-02-10 | Microsoft Corporation | Systems and methods for caching in authentication systems |
US8103868B2 (en) * | 2005-04-20 | 2012-01-24 | M-Qube, Inc. | Sender identification system and method |
US8249965B2 (en) * | 2006-03-30 | 2012-08-21 | Obopay, Inc. | Member-supported mobile payment system |
US20100223184A1 (en) * | 2006-10-11 | 2010-09-02 | Visa International Service Association | Sponsored Accounts For Computer-Implemented Payment System |
US8578175B2 (en) * | 2011-02-23 | 2013-11-05 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
US8271650B2 (en) * | 2009-08-25 | 2012-09-18 | Vizibility Inc. | Systems and method of identifying and managing abusive requests |
US11138605B2 (en) * | 2013-07-02 | 2021-10-05 | Visa International Service Association | Online authentication in access transactions |
US20150332223A1 (en) * | 2014-05-19 | 2015-11-19 | Square, Inc. | Transaction information collection for mobile payment experience |
US10635722B2 (en) * | 2015-04-20 | 2020-04-28 | Ogy Docs, Inc. | Method of distributed management of electronic documents of title (EDT) and system thereof |
US9992028B2 (en) * | 2015-11-26 | 2018-06-05 | International Business Machines Corporation | System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger |
US9985964B2 (en) * | 2016-03-28 | 2018-05-29 | Black Gold Coin, Inc. | Systems and methods for providing block chain-based multifactor personal identity verification |
US20170344988A1 (en) * | 2016-05-24 | 2017-11-30 | Ubs Ag | System and method for facilitating blockchain-based validation |
EP3479333A4 (en) * | 2016-07-01 | 2019-12-18 | Wells Fargo Bank N.A. | FINANCIAL BLOCKCHAIN SYSTEM FOR INTERNATIONAL TRADE |
US10425399B2 (en) * | 2016-07-12 | 2019-09-24 | International Business Machines Corporation | Template-based distributed certificate issuance in a multi-tenant environment |
US10700853B2 (en) * | 2016-07-12 | 2020-06-30 | International Business Machines Corporation | Token identity and attribute management |
WO2018047085A1 (en) | 2016-09-08 | 2018-03-15 | Thomson Reuters Global Resources Unlimited Company | Systems and methods for providing identity assurance for decentralized applications |
EP3563325A4 (en) * | 2016-12-30 | 2020-09-02 | Slock.it GmbH | BLOCKCHAIN ACTIVATED SERVICE PROVIDER SYSTEM |
CN107248074A (zh) * | 2017-03-29 | 2017-10-13 | 阿里巴巴集团控股有限公司 | 一种基于区块链的业务处理方法及设备 |
US11966886B2 (en) * | 2017-06-22 | 2024-04-23 | Jpmorgan Chase Bank, N.A. | System and method for implementing an interbank information network |
CN107748074B (zh) | 2017-09-07 | 2019-06-28 | 华南农业大学 | 一种电动修剪机自动试验台 |
WO2019059598A1 (en) * | 2017-09-20 | 2019-03-28 | Samsung Electronics Co., Ltd. | METHOD AND APPARATUS FOR MANAGING SERVICE REQUEST IN BLOCK CHAIN NETWORK |
KR20190041784A (ko) * | 2017-10-13 | 2019-04-23 | 주식회사 포스링크 | 멀티클라우드 환경에서 블록체인 기반의 분산동기화 접근 제어 시스템 및 그 방법 |
US20190114706A1 (en) * | 2017-10-17 | 2019-04-18 | SALT Lending Holdings, Inc. | Blockchain oracle for managing loans collateralized by digital assets |
CN108696502B (zh) * | 2018-03-27 | 2020-10-20 | 深圳市网心科技有限公司 | 区块链节点权限控制方法、区块链系统及存储介质 |
CN108769173B (zh) * | 2018-05-21 | 2021-11-09 | 阿里体育有限公司 | 运行智能合约的区块链实现方法及设备 |
JP6858264B2 (ja) | 2018-12-28 | 2021-04-14 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | スマートコントラクトのホワイトリスト |
-
2018
- 2018-12-28 JP JP2019542591A patent/JP6858264B2/ja active Active
- 2018-12-28 AU AU2018347204A patent/AU2018347204B2/en active Active
- 2018-12-28 MX MX2019009285A patent/MX2019009285A/es unknown
- 2018-12-28 RU RU2019124837A patent/RU2744827C2/ru active
- 2018-12-28 SG SG11201907155UA patent/SG11201907155UA/en unknown
- 2018-12-28 KR KR1020197023255A patent/KR102222612B1/ko active IP Right Grant
- 2018-12-28 CN CN201880011322.2A patent/CN110366729A/zh active Pending
- 2018-12-28 WO PCT/CN2018/124852 patent/WO2019072304A2/en unknown
- 2018-12-28 EP EP18866466.8A patent/EP3577853B1/en active Active
- 2018-12-28 BR BR112019016188A patent/BR112019016188A2/pt not_active IP Right Cessation
- 2018-12-28 CA CA3052735A patent/CA3052735C/en active Active
-
2019
- 2019-05-24 US US16/422,110 patent/US10832239B2/en active Active
- 2019-08-06 ZA ZA2019/05193A patent/ZA201905193B/en unknown
- 2019-08-07 PH PH12019501831A patent/PH12019501831A1/en unknown
-
2020
- 2020-11-09 US US17/092,901 patent/US11068887B2/en active Active
-
2021
- 2021-06-07 US US17/340,864 patent/US11354656B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101878869B1 (ko) * | 2017-11-17 | 2018-08-16 | 주식회사 미탭스플러스 | 블록체인 기반의 사용자 식별 관리를 위한 분산 원장 장치 및 분산 원장 방법 |
Also Published As
Publication number | Publication date |
---|---|
ZA201905193B (en) | 2020-05-27 |
CN110366729A (zh) | 2019-10-22 |
EP3577853A4 (en) | 2020-04-08 |
EP3577853B1 (en) | 2022-02-23 |
US20210295314A1 (en) | 2021-09-23 |
US11354656B2 (en) | 2022-06-07 |
EP3577853A2 (en) | 2019-12-11 |
JP2020510906A (ja) | 2020-04-09 |
RU2744827C2 (ru) | 2021-03-16 |
MX2019009285A (es) | 2019-10-30 |
US11068887B2 (en) | 2021-07-20 |
SG11201907155UA (en) | 2019-09-27 |
KR20200083939A (ko) | 2020-07-09 |
US20210056543A1 (en) | 2021-02-25 |
CA3052735C (en) | 2021-06-22 |
CA3052735A1 (en) | 2019-04-18 |
AU2018347204B2 (en) | 2020-10-22 |
PH12019501831A1 (en) | 2020-03-16 |
AU2018347204A1 (en) | 2020-07-16 |
BR112019016188A2 (pt) | 2020-04-14 |
WO2019072304A2 (en) | 2019-04-18 |
WO2019072304A3 (en) | 2019-10-31 |
RU2019124837A (ru) | 2021-02-08 |
US10832239B2 (en) | 2020-11-10 |
JP6858264B2 (ja) | 2021-04-14 |
US20190279201A1 (en) | 2019-09-12 |
RU2019124837A3 (ko) | 2021-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102222612B1 (ko) | 스마트 계약 화이트리스트 | |
US11381573B2 (en) | Parallel execution of transactions in a blockchain network based on smart contract whitelists | |
KR102234128B1 (ko) | 블록체인 네트워크에서의 트랜잭션의 병렬 실행 | |
KR102212817B1 (ko) | 신뢰할 수 있는 실행 환경을 기반으로 한 오프체인 스마트 계약 서비스 | |
KR102153845B1 (ko) | 퍼블릭 사이드체인을 사용하여 컨소시엄 블록체인에 저장된 데이터의 무결성 검증 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right |