KR102304954B1 - 피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템 - Google Patents

피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템 Download PDF

Info

Publication number
KR102304954B1
KR102304954B1 KR1020200002266A KR20200002266A KR102304954B1 KR 102304954 B1 KR102304954 B1 KR 102304954B1 KR 1020200002266 A KR1020200002266 A KR 1020200002266A KR 20200002266 A KR20200002266 A KR 20200002266A KR 102304954 B1 KR102304954 B1 KR 102304954B1
Authority
KR
South Korea
Prior art keywords
contract
node
servers
transaction
hash value
Prior art date
Application number
KR1020200002266A
Other languages
English (en)
Other versions
KR20210027011A (ko
Inventor
박윤성
Original Assignee
주식회사 미디움
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 미디움 filed Critical 주식회사 미디움
Publication of KR20210027011A publication Critical patent/KR20210027011A/ko
Application granted granted Critical
Publication of KR102304954B1 publication Critical patent/KR102304954B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • H04L67/28
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

일 실시예에 따른 정보 처리 방법은, 블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받는 단계와, 상기 트랜잭션에 대응되는 컨트랙트에 기초해서, 상기 블록체인 플랫폼의 계약 실행(contract executer) 노드에 포함된 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 단계와, 상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 단계를 포함하여 수행된다.

Description

피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템{PEER NODE, METHOD FOR PROCESSING INFORMATION EXECUTED ON PEER NODE AND BLOCKCHAIN PLATFORM SYSTEM}
본 발명은 피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템에 관한 것이다.
탈중앙화(Decentralization)된 전자화폐가 공개된 이래로, 전세계 다양한 국가와 기업들은, 핵심기술인 블록체인을 다양한 산업영역에 적용해보고자 하는 연구와 노력을 지속하고 있다. 아울러, 이러한 블록체인 기술을 거래 정보뿐만 아닌 데이터를 저장하고 전달하는 모든 방식에 활용하고자 하는 시도 또한 이어지고 있다.
하지만 현재의 블록체인 기술의 수준으로는, 실제 응용서비스를 구동시키기는 것이 용이하지 않다. 이에 기술 수준을 향상시키기 위한 방안으로서, 전술한 탈중앙화에 대한 수정 내지 타협이 연구되고 있다. 이러한 수정 내지 타협에 따라, 합의에 요구되는 리소스의 양이 줄어드는 성과가 보고되고 있다.
다만, 이러한 성과가, 스마트 컨트랙트(smart contract)의 실행에 대한 성능 병목까지 해결해주는 것은 아니다.
한국특허공보, 제10-1924026호 (2018.11.26. 등록)
본 발명의 해결하고자 하는 과제는, 복수 개의 계약 서버(smart contract server) 중 어느 하나의 계약 서버에서 컨트랙트(contract)가 실행될 수 있도록 하는 기술을 제공하는 것을 포함한다.
다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
일 실시예에 따른 블록체인 플랫폼을 구성하는 피어 노드(peer node)에서 실행되는 정보 처리 방법은, 상기 블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받는 단계와, 상기 트랜잭션에 대응되는 컨트랙트에 기초해서, 상기 블록체인 플랫폼의 계약 실행(contract executer) 노드에 포함된 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 단계와, 상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 단계를 포함하여 수행된다.
또한, 상기 선택하는 단계는 상기 트랜잭션에 대응되는 컨트랙트에 기초해서 해시값을 추출한 뒤, 상기 추출된 해시값에 기초해서 상기 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택할 수 있다.
또한, 상기 복수 개의 계약 서버 각각에는 해시값의 범위가 서로 상이하게 할당되어 있고, 상기 선택하는 단계는 상기 복수 개의 계약 서버 중에서, 상기 할당되어 있는 해시값의 범위가 상기 추출된 해시값을 포함하는 계약 서버를 선택할 수 있다.
또한, 상기 복수 개의 계약 서버 각각에는 복수 개의 구성 서버가 포함되되, 상기 복수 개의 구성 서버 각각에는 소정의 계약을 실행하는 실행부 및 상기 실행부와 관련된 상태 데이터베이스(state database)가 각각 복수 개씩 마련되어 있을 수 있다.
일 실시예에 따른 피어 노드는, 블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받으면, 상기 트랜잭션에 대응되는 컨트랙트에 기초해서, 상기 블록체인 플랫폼의 계약 실행(contract executer) 노드에 포함된 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 선택부와, 상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 보증 노드를 포함한다.
일 실시예에 따른 블록체인 플랫폼 시스템은, 복수 개의 계약 서버를 포함하는 계약 실행(contract executer) 노드와, 피어 노드를 포함하되, 상기 피어 노드는, 블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받으면, 상기 트랜잭션에 대응되는 컨트랙트에 기초해서, 상기 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 선택부와, 상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 보증 노드를 포함한다.
일 실시예들에 의하면, 컨트랙트가 복수 개의 계약 서버에 분산되어서 실행될 수 있다. 따라서 동시에 실행될 수 있는 컨트랙트의 숫자가 증가될 수 있다. 아울러, 실행이 예상되는 컨트랙트의 숫자가 많을 경우, Arm server와 같은 계약 서버를 확장함으로써 이러한 컨트랙트의 처리가 원활하게 진행될 수 있다.
도 1은 일 실시예에 따른 피어 노드를 포함하는 블록체인 플랫폼 시스템에 대한 예시적인 구성도이다.
도 2는 도 1에 도시된 복수 개의 계약 서버 중 어느 하나의 계약 서버에 대한 예시적인 구성도이다.
도 3은 도 2에 도시된 복수 개의 구성 서버 중 어느 하나의 구성 서버에 대한 예시적인 구성도이다.
도 4는 일 실시예에 따른 블록체인 플랫폼 시스템에서, 컨트랙트가 처리되는 과정을 설명하기 위한 예시적인 흐름도이다.
도 5는 복수 개의 계약 서버(smart contract server) 중에서 컨트랙트가 실행 내지 시뮬레이션될 계약 서버가 선택되는 과정에 대해 예시적으로 나타내는 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 명세서에서 단수의 표현은 문맥상 명백하게 다름을 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, '포함하다' 또는 '구성하다' 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 본 발명의 실시 예에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적인 연결뿐 아니라, 다른 매체를 통한 간접적인 연결의 경우도 포함한다. 또한 어떤 부분이 어떤 구성 요소를 포함한다는 의미는, 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.
도 1은 일 실시예에 따른 피어 노드(120)를 포함하는 블록체인 플랫폼 시스템(100)에 대한 예시적인 구성도이다.
도 1에 나타낸 바와 같이 일 실시예에 따른 블록체인 플랫폼 시스템(100)은 프록시(Proxy) 노드(110), 피어(Peer) 노드(120), 검증(Verifier) 노드(130), 공유 메모리(Shared memory)(140), 지시(Orderer) 노드(150), 블록 스토리지(Block storage)(160) 및 계약 실행(Contract executer) 노드(170)를 포함할 수 있고, 피어 노드(120)는 보증(Endorser) 노드(121)와 위임(Committer) 노드(122) 및 선택부(123)를 포함할 수 있다. 이 때, 검증 노드(130)는 Q(단, Q는 자연수)개의 코어(131)를 포함할 수 있고, 계약 실행 노드(170)는 N(단, N은 자연수)개의 계약 서버(171)를 포함할 수 있다.
먼저, 프록시 노드(110)는 블록체인 코어들, 즉 피어 노드(120), 검증 노드(130) 및 지시 노드(150) 등과 클라이언트 어플리케이션(10)과의 매개역할을 하는 서비스이다. 이러한 프록시 노드(110)는 악의적인 접근에 대한 방어벽 역할을 할 수 있다.
피어 노드(120)는 보증 노드(121), 위임 노드(22) 및 선택부(123)를 포함한다.
이 중 보증 노드(121)는 클라이언트 어플리케이션(10)에 의하여 생성된 트랜잭션 제안에 대하여 보증 정책을 준수하였는지를 확인할 수 있다.
또한, 보증 노드(121)는 보증 정책 준수에 대한 확인 작업 중에, 검증 노드(130)에게 사용자 서명의 유효성 확인을 위임할 수 있다.
만약, 검증 노드(130)에 의해 사용자 서명의 유효성이 확인되고, 트랜잭션 제안이 보증 정책을 준수하는 것으로 확인되면, 보증 노드(121)는 해당 트랜잭션을 실행할 수 있다. 여기서, 이러한 트랜잭션의 실행은 컨트랙트(contract)의 실행으로 이어지는데, 이에 대해서는 후술하기로 한다.
한편, 보증 노드(121)는 해당 트랜잭션의 실행 중에 보증 노드(121)에 대한 서명 생성을 검증 노드(130)에게 위임할 수 있고, 검증 노드(130)에 의하여 생성된 보증 노드(121)에 대한 서명을 제안 응답에 포함시켜 프록시 노드(110)을 통하여 클라이언트 어플리케이션(10)에 전달할 수 있다.
위임 노드(122)는 지시 노드(150)로부터 전달받은 블록 내의 모든 트랜잭션이 각각의 보증 정책을 준수하는지를 확인할 수 있고, 트랜잭션이 보증 정책을 준수하는지 확인하는 과정 중에, 블록 내에 포함된 모든 트랜잭션에 포함되어 있는 보증 노드(121)에 대한 서명에 대한 검증을, 검증 노드(130)에rp 위임할 수 있으며, 모든 트랜잭션이 보증 정책을 준수하는 것으로 확인된 블록이 포함되도록 블록 스토리지(160)의 블록체인 원장을 갱신할 수 있다.
선택부(123)는 계약 실행 노드(170)에 포함된 N개의 계약 서버(171) 중 어느 하나의 계약 서버(171)를 선택한다. 선택된 계약 서버(171)에서는, 클라이언트 어플리케이션(10)으로부터 전달받은 트랜잭션에 대응되는 컨트랙트가 실행될 수 있다.
이 때, 이러한 계약 서버(171)의 선택 과정에 대해 살펴보기로 하자. N개의 계약 서버(171) 각각에는 해시값의 범위가 서로 상이하게, 즉 겹치지 않게 할당되어 있다고 전제하자. 예컨대 계약 서버#1(171)에는 0부터 A까지의 해시값 범위가 할당되어 있고, 계약 서버#2(171)에는 A+1부터 B까지의 해시값 범위가 할당되어 있으며, 계약 서버#3(171)에는 B+1부터 C까지의 해시값 범위가 할당되어 있다고 하자.
이를 전제로, 선택부(123)는, 클라이언트 어플리케이션(10)으로부터 전달받은 트랜잭션에 대응되는 컨트랙트에 기초해서, 해시값을 추출한다. 해시값 추출의 알고리즘 등은 이미 공지된 기술을 채용하는 것으로 한다.
아울러 선택부(123)는, N개의 계약 서버(171) 중에서 어느 하나의 계약 서버(171)를 선택한다. 선택 과정에서는, N개의 계약 서버(171) 중, 선택부(123)에 의해 추출된 해시값을 포함하는 해시값 범위를 갖는 계약 서버(171)가 선택될 수 있다.
지시 노드(150)는 클라이언트 어플리케이션(10)에서 생성한 트랜잭션 메시지를 수신하고, 트랜잭션 메시지에 포함된 내용에 관계 없이 모든 채널에서 발생하는 트랜잭션을 받아서 시간 순서대로 정렬하여 블록을 생성하고, 생성된 블록을 채널의 모든 피어 노드(120)들의 위임 노드(121)에 전달한다.
검증 노드(130)는 보증 노드(121)로부터 사용자 서명에 대한 유효성 확인을 위임 받아서, 이러한 사용자 서명에 대한 유효성을 확인할 수 있다. 또한, 검증 노드(130)는, 복수의 코어(131)에 의하여 병렬적으로 처리한 사용자 서명 유효성 확인의 결과를 보증 노드(121)에 회신할 수도 있다.
또한, 검증 노드(130)는 보증 노드(121)로부터 보증 노드(121)의 서명 생성 작업을 위임 받아 복수의 코어(131)에 의하여 병렬적으로 처리한 서명 생성 결과를 보증 노드(121)에 회신할 수도 있다.
또한, 검증 노드(130)는 지시 노드(150)에서 생성된 블록 내의 트랜잭션에 포함된 보증 노드(121)의 서명에 대한 검증을 위임 노드(122)로부터 위임 받을 수 있고, 복수의 코어(141)에 의하여 병렬적으로 처리한 보증 노드(121)의 서명 검증 결과를 위임 노드(122)에 회신할 수 있다.
공유 메모리(140)는 피어 노드(120)의 보증 노드(121)와 검증 노드(130) 사이에 교신을 할 때 및 피어 노드(120)의 위임 노드(122)와 검증 노드(130)가 교신을 할 때에 공동으로 사용하는 저장공간이다.
한편, 도 2에는 도 1에 도시된 N개의 계약 서버(171) 중 어느 하나의 계약 서버(171)에 대한 예시적인 구성도가 도시되어 있다. 도 2를 참조하면, 계약 서버(171)에는 M개의 구성 서버(172)가 포함되어 있다. 이러한 구성 서버(172)는 Arm 서버일 수 있으며, 다만 이에 한정되는 것은 아니다. 즉, 1개의 계약 서버(171)에는 M개의 Arm 서버와 같은 구성 서버(172)가 포함될 수 있다.
아울러, 각각의 구성 서버(172)에는 P개(단, P는 자연수)의 계약 실행부(173)가 포함되어 있다. 각각의 계약 실행부(173)에 대한 구성은 도 3에 도시되어 있는데, 도 3을 참조하면, 계약 실행부(173)에는 실행부와 상태 DB(DataBase)가 포함되어 있다. 각각의 실행부에서는 사전에 지정된 컨트랙트가 실행될 수 있다. 아울러, 이러한 실행부와 각각 연관되어 있는 상태 DB에는, 컨트랙트와 관련된 데이터들이 저장되어 있다.
여기서, 계약 실행부(173) 각각은 샤딩(sharding) 또는 복제(replication)될 수 있으며, 여러가지 알고리즘에 따라 리밸런싱이 가능하다. 예컨대, 특정 컨트랙트의 실행에 소요되는 리소스가 평균보다 높거나 또는 사전에 정의된 양보다 높아진 경우, 샤딩이나 복제 등을 통해 특정 컨트랙트가 샤딩 내지 복제될 수 있다.
즉, 도 1 내지 3을 참조해서 살펴보면, 일 실시예에 따른 블록체인 플랫폼 시스템(100)에는 smart contract server와 같은 계약 서버(171)가 복수 개가 포함되고, 각각의 계약 서버(171)에는 Arm server와 같은 구성 서버(172)가 복수 개가 포함되며, 각각의 구성 서버(172)에는 실행부와 상태 DB로 구성된 계약 실행부(173)가 복수 개가 포함된다. 여기서, 각각의 계약 실행부(173)에는, 사전에 지정된 컨트랙트만이 실행되도록 설정되어 있을 수 있다.
이하, 도 1 내지 4 및 5를 참조하여 본 발명의 일 실시예에 따른 블록체인 플랫폼 시스템(100)의 트랜잭션 및 컨트랙트 처리 과정에 대하여 살펴보기로 한다.
먼저, 도 4를 참조하면, 일반 사용자 혹은 허가된 사용자는 클라이언트 어플리케이션(10)의 SDK(Software Development Kit)를 통해 프록시 노드(110)에 접속한 후 트랜잭션을 호출하여 다양한 트랜잭션 제안(transaction proposal)을 발생시킬 수 있다(S201). 여기서, 사용자의 신원 정보가 서명 형태로 트랜잭션 제안에 삽입될 수 있다. 예를 들어, 일반 사용자는 계정을 생성한 후 해당 계정의 개인키를 통하여 트랜잭션을 생성할 수 있다. 허가된 사용자는 CA(Certification Authority)를 통하여 발부 받은 신원 증명서를 통해 트랜잭션을 생성할 수 있다.
프록시 노드(110)는 클라이언트 어플리케이션(10)과 블록체인 플랫폼 코어들(예컨대, 지시 노드, 보증 노드 및 위임 노드 등)과의 매개역할을 하는 서비스이며, 클라이언트 어플리케이션(10)이 자신을 통해서 블록체인 플랫폼 코어들과 간접적으로 접속할 수 있게 하고, 악의적인 접근에 대한 방어벽 역할을 할 수도 있다. 클라이언트 어플리케이션(10)에 의하여 생성된 트랜잭션은 프록시 노드(110)를 통하여 피어 노드(120) 내의 보증 노드(121)로 전달된다. 이때, 복수의 피어 노드(120) 내에 각각 포함된 보증 노드(121)에 트랜잭션 제안이 전달된다(S203).
보증 노드(121)들에는 트랜잭션의 보증 정책(endorsing policy)이 명시되어 있고, 이러한 보증 노드(121)들은 트랜잭션 제안이 보증 정책을 준수하는지를 확인한 후 해당 트랜잭션을 실행할 수 있다.
보증 노드(121)는 트랜잭션 제안이 보증 정책을 준수하는지를 확인하는 과정 중, 트랜잭션 제안이 형식에 맞게 내용이 제대로 채워져 있는지 확인할 수 있고, 이전에 제출된 적이 있는 트랜잭션인지를 확인할 수 있으며, 트랜잭션을 제안한 클라이언트가 제안 권한이 있는지를 확인할 수 있다.
보증 노드(121)에 명시된 보증 정책에는 사용자 서명의 유효성이 포함될 수 있다. 이 경우에, 보증 노드(121)는 검증 노드(130)에게 사용자 서명의 유효성 확인을 위임할 수 있다. 그러면, 검증 노드(130)에는 복수의 보증 노드(121)로부터 사용자 서명의 유효성 확인이 위임될 수 있다(S205). 이러한 복수의 사용자 서명 유효성 확인 작업은 검증 노드(130)를 구성하는 복수의 코어(131)에 의하여 병렬적으로 처리되며(S207), 그 처리 결과가 피어 노드(120)의 보증 노드(121)에 회신된다(S209). 여기서, 단계 S205 및 단계 S209의 교신은 피어 노드(120)와 검증 노드(130)가 공동으로 사용하는 공유 메모리(140)를 이용할 수 있다.
보증 노드(121)는, 검증 노드(130)에 의하여 사용자 서명의 유효성이 확인되었고 트랜잭션 제안이 보증 정책을 준수하는 것으로 최종 확인(S211)되었으면, 해당 트랜잭션을 실행할 수 있다(S213). S213에 대해 보다 자세하게 예를 들어 살펴보면, 보증 노드(121)는 특정 계산에 의해 컨트랙트를 호출할 수 있고, 호출된 컨트랙트는 소정의 매개변수에 따라 시뮬레이션이 되며, 시뮬레이션의 결과값(read/write set)을 보증 노드(121)에 반환할 수 있다.
이 때, 호출된 컨트랙트는 계약 실행 노드(170)에 포함된 복수 개의 계약 서버(171) 중 어느 하나의 계약 서버(171)에서 실행 내지 시뮬레이션될 수 있는데, 이러한 어느 하나의 계약 서버(171)는 피어 노드(120)의 선택부(123)에 의해 선택된 것일 수 있다. 이하에서는, 선택부(123)가 복수 개의 계약 서버 (171) 중에서 어느 하나의 계약 서버(171)를 선택하는 과정에 대해, 도 5를 참조해서 보다 자세하게 살펴보기로 한다.
도 5는 피어 노드(120)의 선택부(123)가 복수 개의 계약 서버(171) 중에서 컨트랙트가 실행 내지 시뮬레이션될 계약 서버(171)를 선택하는 과정에 대해 예시적으로 나타내는 흐름도이다. 다만, 도 5는 예시적인 것에 불과하므로, 본 발명의 사상이 도 5에 도시된 것으로 한정 해석되는 것은 아니다.
도 5를 참조하면, 보증 노드(121)는 단계 S203에서 프록시 노드(110)로부터 전달받은 트랜잭션 제안을 분배부(123)에게 전달한다(S2131).
그러면 분배부(123)는 복수 개의 계약 서버(171) 중에서 어느 하나의 계약 서버(171)를 선택한다(S2132). 선택하는 과정에서는, S2131에서 전달받은 트랜잭션 제안에 대응되는 컨트랙트의 해시값과, 복수 개의 계약 서버(171) 각각에 할당되어 있는 해시값 범위를 비교함으로써 선택하는데, 이러한 선택 과정은 앞서 설명된 것을 원용하기로 한다.
이 후, 분배부(123)는 S2132에서 선택된 계약 서버(171)에게 컨트랙트에 대한 요청(request)를 전달한다(S2133).
요청을 전달받은 계약 서버(171)는 해당 요청에 따른 컨트랙트를 실행한다(S2134). 이러한 실행은 매개변수에 의해 시뮬레이션된다.
트랜잭션 실행의 결과값은 약 서버(171)로부터 보증 노드(121)에게 전달된다(response)(S2135).
다시 도 4를 참조하자. 그러면, 피어 노드(120)는 트랜잭션 실행의 결과값을 프록시 노드(110)를 통하여 제안 응답(proposal response)으로서 클라이언트 어플리케이션(10)에 전달할 수 있다. 이때, 제안 응답에는 보증 노드(121)의 서명이 포함될 수 있으며, 보증 노드(121)는 서명 생성을 검증 노드(130)에 위임할 수 있다. 그러면, 검증 노드(130)에는 복수의 보증 노드(121)로부터 서명 생성이 위임될 수 있다(S215). 이러한 복수의 서명 생성 작업은 검증 노드(130)를 구성하는 복수의 코어(141)에 의하여 병렬적으로 처리되며(S217), 그 처리 결과에 의하여 생성된 서명이 피어 노드(120)의 보증 노드(121)에 회신될 수 있고(S219), 보증 노드(121)는 검증 노드(130)에 의하여 생성된 서명을 제안 응답에 포함시켜 프록시 노드(110)을 통하여 클라이언트 어플리케이션(10)에 전달할 수 있다(S221, S223).
클라이언트 어플리케이션(10)은 보증 노드(121)의 서명을 확인한 뒤 각 피어 노드(120)로부터의 제안 응답을 비교하는 작업을 수행한다. 단순한 쿼리 같이 지시 서비스(ordering service)가 필요 없는 경우에는 쿼리 결과값을 얻고 프로세스가 종료할 수 있다. 원장 갱신과 같은 경우에는 클라이언트 차원에서 보증 정책을 준수하는 제안 응답이 회신되었는지를 검토할 수 있다(S225).
클라이언트 어플리케이션(10)은 제안 응답이 보증 정책을 만족하는 경우에, 제안 응답에 포함된 트랜잭션 결과값을 프록시 노드(110)를 통하여 지시 노드(150)에 전달한다. 예를 들어, 클라이언트 어플리케이션(10)은 트랜잭션 메시지에 트랜잭션 제안과 이에 대응하는 제안 응답을 모두 포함하여 프록시 노드(110)을 통하여 지시 노드(150)로 전송할 수 있다(S227, S229). 예컨대, 트랜잭션 메시지에는 시뮬레이션의 결과값(read/write set), 보증 노드(121)의 서명 및 채널 아이디(ID)가 포함될 수 있다.
지시 노드(150)는 트랜잭션 메시지에 포함된 내용에 관계 없이 모든 채널에서 발생하는 트랜잭션을 받아서 시간 순서대로 정렬하여 블록을 생성하고(S231), 생성된 블록을 채널의 모든 피어 노드(120)들의 위임 노드(122)에 전달한다(S233).
피어 노드(120)들의 각각의 위임 노드(122)는 블록 내의 모든 트랜잭션이 각각의 보증 정책을 준수하는지를 확인한다. 여기서, 보증 정책을 준수하는지 확인하는 과정 중에 블록 내에 포함된 모든 트랜잭션에 포함되어 있는 보증 노드(121)의 서명을 검증하여야 한다. 그런데, 하나의 블록 내에서 다수의 트랜잭션이 포함되어 있고, 각 트랜잭션에는 다수의 서명이 포함되어 있기 때문에 보증 정책을 준수하는지 확인하는 과정 중에 검증하여야 하는 서명의 수가 매우 많다. 예를 들어, 트랜잭션 하나당 4개의 서명을 검증하여야 할 때에 1초에 50만 개 이상의 트랜잭션을 처리하는 목표를 가진 블록체인 플랫폼이라면 초당 200만개 이상의 서명을 검증해야 하기에, 서명에 관련된 처리에 위임 노드(122)의 컴퓨팅연산자원을 집중적으로 할당할 경우에는 데이터베이스 입출력 등과 같은 다른 데이터 처리에 사용되어야 할 컴퓨팅연산자원까지 소비할 가능성이 높고 이는 전체적인 성능 저하를 초래할 수 있다. 이러한 성능 저하를 방지하기 위하여, 위임 노드(122)는 보증 정책을 준수하는지 확인하는 과정 중의 서명 검증을 검증 노드(130)에 위임할 수 있다. 그러면, 검증 노드(130)에는 복수의 위임 노드(122)로부터 서명 검증이 위임될 수 있다(S235). 이러한 복수의 서명 검증 작업은 검증 노드(130)를 구성하는 복수의 코어(141)에 의하여 병렬적으로 처리되며(S237), 그 처리 결과가 피어 노드(120)의 위임 노드(122)에 회신된다(S239). 이때, 위임 노드(122)는 보증 정책을 준수하는지 확인하는 과정에 따른 결과값(예컨대, valid/invalid)을 해당 트랜잭션에 태그를 할 수 있다(S241).
피어 노드(120)들의 각 위임 노드(122)는 보증 정책을 준수하는 것으로 확인된 블록을 블록 스토리지(160)로 전달하여 블록 스토리지(160)의 블록체인 원장에 단계 S231에서 생성된 블록을 추가하여 갱신할 수 있다. 이러한 블록체인 갱신까지의 일련의 과정이 완료되면 피어 노드(120)의 위임 노드(122)는 클라이언트 어플리케이션(10)에게 작업의 결과를 송신할 수 있다.
지금까지 설명한 바와 같이, 일 실시예들에 의하면, 컨트랙트가 복수 개의 계약 서버에 분산되어서 실행될 수 있다. 따라서 동시에 실행될 수 있는 컨트랙트의 숫자가 증가될 수 있다. 아울러, 실행이 예상되는 컨트랙트의 숫자가 많을 경우, Arm server와 같은 계약 서버를 확장함으로써 이러한 컨트랙트의 처리가 원활하게 진행될 수 있다
본 발명에 첨부된 각 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 기록매체에 저장된 인스트럭션들은 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 블록체인 플랫폼 시스템 110: 프록시 노드
120: 피어 노드 121: 보증 노드
122: 위임 노드 130: 검증 노드
140: 공유 메모리 150: 지시 노드
160: 블록 스토리지
170: 계약 실행 노드

Claims (8)

  1. 블록체인 플랫폼을 구성하는 피어 노드(peer node)에서 실행되는 정보 처리 방법으로서,
    상기 블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받는 단계와,
    상기 트랜잭션에 대응되는 컨트랙트에 기초해서 추출된 해시값에 기초해서, 상기 블록체인 플랫폼의 계약 실행(contract executer) 노드에 포함된 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 단계와,
    상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 단계를 포함하되,
    상기 복수 개의 계약 서버 각각에는 상기 해시값의 범위가 서로 상이하게 할당되어 있고,
    상기 선택하는 단계는,
    상기 복수 개의 계약 서버 중에서, 상기 할당되어 있는 해시값의 범위가 상기 추출된 해시값을 포함하는 계약 서버를 선택하는
    정보 처리 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 복수 개의 계약 서버 각각에는 복수 개의 구성 서버가 포함되되, 상기 복수 개의 구성 서버 각각에는 소정의 계약을 실행하는 실행부 및 상기 실행부와 관련된 상태 데이터베이스(state database)가 각각 복수 개씩 마련되어 있는
    정보 처리 방법.
  5. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    제 1 항 또는 제 4 항의 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는
    컴퓨터 판독 가능한 기록매체.
  6. 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    제 1 항 또는 제 4 항의 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는
    컴퓨터 프로그램.
  7. 블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받으면, 상기 트랜잭션에 대응되는 컨트랙트에 기초해서 추출된 해시값에 기초해서, 상기 블록체인 플랫폼의 계약 실행(contract executer) 노드에 포함된 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 선택부와,
    상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 보증 노드를 포함하되,
    상기 복수 개의 계약 서버 각각에는 상기 해시값의 범위가 서로 상이하게 할당되어 있고,
    상기 선택부는,
    상기 복수 개의 계약 서버 중에서, 상기 할당되어 있는 해시값의 범위가 상기 추출된 해시값을 포함하는 계약 서버를 선택하는
    피어 노드.
  8. 복수 개의 계약 서버를 포함하는 계약 실행(contract executer) 노드와,
    피어 노드를 포함하되,
    상기 피어 노드는,
    블록체인 플랫폼의 클라이언트 어플리케이션으로부터 소정의 트랜잭션을 전달받으면, 상기 트랜잭션에 대응되는 컨트랙트에 기초해서 추출된 해시값을에 기초해서, 상기 복수 개의 계약 서버 중 어느 하나의 계약 서버를 선택하는 선택부와,
    상기 선택된 계약 서버에게 상기 트랜잭션을 전달하는 보증 노드를 포함하되,
    상기 복수 개의 계약 서버 각각에는 상기 해시값의 범위가 서로 상이하게 할당되어 있고,
    상기 선택부는,
    상기 복수 개의 계약 서버 중에서, 상기 할당되어 있는 해시값의 범위가 상기 추출된 해시값을 포함하는 계약 서버를 선택하는
    블록체인 플랫폼 시스템.
KR1020200002266A 2019-08-30 2020-01-07 피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템 KR102304954B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190107694 2019-08-30
KR20190107694 2019-08-30

Publications (2)

Publication Number Publication Date
KR20210027011A KR20210027011A (ko) 2021-03-10
KR102304954B1 true KR102304954B1 (ko) 2021-09-27

Family

ID=75148643

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020200002273A KR102304953B1 (ko) 2019-08-30 2020-01-07 피어 노드와 그 정보 처리 방법 및 블록체인 플랫폼 시스템
KR1020200002266A KR102304954B1 (ko) 2019-08-30 2020-01-07 피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템
KR1020200037535A KR20210027038A (ko) 2019-08-30 2020-03-27 프록시 장치 및 프록시 장치에서 수행되는 정보 처리 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200002273A KR102304953B1 (ko) 2019-08-30 2020-01-07 피어 노드와 그 정보 처리 방법 및 블록체인 플랫폼 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020200037535A KR20210027038A (ko) 2019-08-30 2020-03-27 프록시 장치 및 프록시 장치에서 수행되는 정보 처리 방법

Country Status (1)

Country Link
KR (3) KR102304953B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102507732B1 (ko) * 2021-05-27 2023-03-09 부산대학교 산학협력단 허가형 블록체인에서의 분리형 보증 처리 방법 및 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019072305A2 (en) 2018-12-28 2019-04-18 Alibaba Group Holding Limited PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS
US20190188712A1 (en) 2017-12-18 2019-06-20 NEC Laboratories Europe GmbH Efficient validation of transaction policy compliance in a distributed ledger system
WO2019120334A2 (en) 2019-04-12 2019-06-27 Alibaba Group Holding Limited Performing parallel execution of transactions in a distributed ledger system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101950912B1 (ko) * 2016-08-01 2019-02-21 서강대학교산학협력단 블록체인 기반 트랜잭션 검증 시스템 및 그 방법
CN107395665B (zh) * 2017-05-22 2020-04-24 创新先进技术有限公司 一种区块链业务受理及业务共识方法及装置
JP6754319B2 (ja) * 2017-05-25 2020-09-09 日本電信電話株式会社 ブロックチェーン更新システム、サーバ装置、クライアント装置、ブロックチェーン更新方法、およびプログラム
CN107450981B (zh) * 2017-05-31 2020-04-24 创新先进技术有限公司 一种区块链共识方法及设备
US11144893B2 (en) * 2017-10-30 2021-10-12 Nec Corporation Method and system for securing smart contracts in blockchains
KR101924026B1 (ko) 2017-11-10 2018-11-30 부산대학교 산학협력단 해시 기반 서명 기법을 적용한 블록체인 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190188712A1 (en) 2017-12-18 2019-06-20 NEC Laboratories Europe GmbH Efficient validation of transaction policy compliance in a distributed ledger system
WO2019072305A2 (en) 2018-12-28 2019-04-18 Alibaba Group Holding Limited PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS
WO2019120334A2 (en) 2019-04-12 2019-06-27 Alibaba Group Holding Limited Performing parallel execution of transactions in a distributed ledger system

Also Published As

Publication number Publication date
KR20210027012A (ko) 2021-03-10
KR20210027038A (ko) 2021-03-10
KR102304953B1 (ko) 2021-09-27
KR20210027011A (ko) 2021-03-10

Similar Documents

Publication Publication Date Title
CN110915166B (zh) 区块链
CN109981679B (zh) 在区块链网络中执行事务的方法和装置
US20200159576A1 (en) Prioritization in a permissioned blockchain
JP2021534512A (ja) 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
Bozic et al. Securing virtual machine orchestration with blockchains
US20220004539A1 (en) Privacy preserving architecture for permissioned blockchains
CN111144881A (zh) 对资产转移数据的选择性访问
KR20190111037A (ko) 컨소시엄 블록체인에 의한 스마트 계약 업그레이드 방법 및 시스템
JP2020515092A (ja) ブロックチェーン監視及び管理
KR20190070163A (ko) 네트워크를 통해 서로 통신하는 노드들 각각의 자원 운영 방법, 그리고 그러한 노드들 중 어느 하나로 동작하는 컴퓨터 장치
EP4216077A1 (en) Blockchain network-based method and apparatus for data processing, and computer device
US20220156837A1 (en) Distributed ledger implementation for entity formation and monitoring system
US11270030B2 (en) System and method for consensus management
CN109379336A (zh) 一种统一认证方法、分布式系统和计算机可读存储介质
KR102525157B1 (ko) 검증가능한 추첨을 위한 장치 및 방법
CN111492355A (zh) 用于控制和/或监控装置的方法和控制系统
KR20160018554A (ko) 신뢰 및 비신뢰 플랫폼에 걸쳐 인터넷 액세스가능 애플리케이션 상태를 로밍하는 기법
CN114239060A (zh) 数据获取方法、装置、电子设备及存储介质
CN111597269A (zh) 一种基于区块链的合约实现方法、装置及设备
KR102304954B1 (ko) 피어 노드, 피어 노드에서 수행되는 처리 방법 및 블록체인 플랫폼 시스템
KR20210097560A (ko) 블록체인 트랜잭션 처리 방법
KR20230132878A (ko) 실행-오더-검증 블록체인 모델들에서 트랜잭션 취소들 감소
CN115913734A (zh) 应用于联盟链的用户权限管理方法、装置及设备
CN111507728A (zh) 一种支付配置方法及装置
US20230409400A1 (en) System for resource allocation and monitoring

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant