블록체인의 기술적 특성 - 2

 

 

 

블록체인의 기술적 특성 - 1

블록체인이란? ■ 블록체인 블록체인은 네트워크 내의 참여 개체가 공동으로 정보 및 가치의 이동을 기록·검증·보관·실행함으로써 중개자 없이도 데이터의 신뢰성 확보를 가능하게 하는 기술

jjanglabi.tistory.com

 

 

블록체인 구성

 

■ 블록체인 아키텍처

 

일반적인 블록체인 아키텍처는 블록체인 SW 플랫폼, 블록체인 시스템, 블록체인 솔루션으로 구성되며, 이를 도식화하면 다음과 같다.

 

 

블록체인 SW 플랫폼은 각 블록체인 노드에 탑재되어 블록체인 노드가 블록체인 시스템에 참여할 수 있도록 제공되는 프로세스(암호 기능, 트랜잭션 관리, 스마트 컨트랙트, 탈중앙화 애플리케이션 등), 저장소(안전한 저장소, 원장 관리 등), 통신 기능(P2P/통신 프로토콜, 합의 프로토콜, 애플리케이션 인터페이스 등)의
집합이다.

 

블록체인 시스템은 운영 정책, 네트워크 구성 방법 등 사전에 정의된 거버넌스ㆍ정책에 따라 네트워크를 구성하고 블록체인을 공유할 수 있도록 구현한 것이다.

 

블록체인 솔루션은 블록체인 기반 서비스를 제공하는 데 필요한 모든 기능을 통합 구현한 것이다. 일반적으로 블록체인 솔루션은 블록체인 시스템을 기반으로 블록체인 외부 시스템(블록체인 오라클, 오프체인 저장소 등), 외부 블록체인 솔루션과의 연계 기능을 포함한 개념이다.

 

 

■ 블록체인 노드

 

블록체인 노드는 블록체인 시스템에 참여하여 네트워크를 구성하는 기기 또는 프로그램으로 아래와 같은 기능의 일부 또는 전체를 수행할 수 있다.

 

 

 

■ 계정 관리

 

블록체인 솔루션은 참여 개체를 식별하기 위해 개체별로 계정을 부여하며, 허가형 블록체인 솔루션은 계정을 관리할 수 있는 계정 관리 시스템을 가져야 한다. 블록체인의 계정은 블록체인 SW 플랫폼 계정, 블록체인 외부 시스템 계정, 탈중앙화 애플리케이션 계정(DApp 계정) 등으로 나눌 수 있으며 분류에 따라 별도의 계정 관리 시스템을 가질 수 있다.


블록체인 SW 플랫폼 계정은 블록체인 네트워크에 참여하는 개체에 부여되며, 블록체인 SW 플랫폼에서 자체적으로 제공하는 계정 관리 시스템으로 관리된다. 블록체인 SW 플랫폼 계정을 소유한 개체는 트랜잭션 생성ㆍ검증, 블록 조회ㆍ생성ㆍ검증, 스마트 컨트랙트 설치ㆍ실행, 블록체인 코어 인터페이스 접근 등 블록체인 SW 플랫폼 내에서 다양한 역할을 수행할 수 있으며 계정별로 역할과 권한이 다를 수 있다.

 

블록체인 SW 플랫폼 계정은 전자 서명을 생성하기 위한 개인키ㆍ공개키 쌍을 필요로 한다.

 

블록체인 외부 시스템 계정은 블록체인 네트워크에 직접 참여할 수 없으며, 블록체인 시스템에 접근하기 위해서는 별도의 인터페이스를 통해 간접적으로 접근해야 한다. 탈중앙화 애플리케이션 계정(DApp 계정)은 탈중앙화 애플리케이션을 통해 원장 조회ㆍ기록, 외부 시스템 자료 조회, 스마트 컨트랙트 실행 등을 할 수 있으며 전자서명을 생성하기 위한 개인키ㆍ공개키 쌍을 필요로 한다.

 

 

트랜잭션과 블록, 원장

 

■ 트랜잭션 구조

 

 

트랜잭션은 자산의 이동 또는 생성과 같이 블록체인에서 발생하는 이벤트의 기록이다. 트랜잭션은 일반적으로 헤더, 입력, 출력, 전자 서명으로 구성되며 블록체인 SW 플랫폼별로 상세 구성은 다를 수 있다. 

 

헤더에는 트랜잭션 관련 정보들이 기록되고, 스마트 컨트랙트의 실행 결과 등을 포함한 트랜잭션 처리 데이터는 입력ㆍ출력에 포함되며, 트랜잭션 생성 개체의 전자 서명이 첨부된다(필요하다면 트랜잭션 생성 요청 개체의 전자 서명도 포함). 

 

암호화폐의 경우, 송금 개체의 정보와 수신 개체의 정보가 입력과 출력에 각각 기록되며, 송금 개체의 전자 서명이 첨부된다. 스마트 컨트랙트의 경우, 실행에 필요한 매개변수와 수행 결과가 입력과 출력에 각각
기록되며, 실행 개체의 전자 서명이 포함될 수도 있다.

 

 

■ 블록 구조

 

블록은 일반적으로 블록 헤더, 블록 데이터, 블록 검증 데이터로 이루어진다.

 

 

블록 헤더는 블록 번호, 블록 생성 시각, 블록 데이터의 해시값, 그리고 이전 블록 헤더의 해시값을 포함한다.


블록 데이터는 다수의 트랜잭션을 포함한다.

 

블록 검증 데이터는 블록을 생성하는 개체의 공개키와 전자 서명 값을 포함한다.

 

 

■ 원장

 

 

블록체인 기술에서 원장은 블록체인 참여 개체가 합의한 블록들을 체인으로 연결해놓은 자료 구조이다. 합의 프로토콜을 이용한 합의를 통해 모든 참여 개체가 동일한 원장을 공유할 수 있으며, 완결성을 제공하는 합의 프로토콜을 통해 원장에 기록된 블록이 삭제되지 않음을 보장할 수 있다. 또한, 해시 함수를 이용한
체인을 통해 원장에 기록된 블록이 변조되지 않는 특성을 제공한다.


원장에 기록된 트랜잭션은 단순 나열 형태로, 필요한 정보를 즉시 추출하기 어렵다. 이를 보완하기 위해 블록체인 SW 플랫폼은 원장을 유용하게 활용할 수 있는 형태로 가공한 상태 DB를 제공한다. 상태 DB는 공유되지 않고 블록체인 참여 개체가 개별관리하지만, 공유된 원장에 기록된 내용을 기반으로 관리하기 때문에 각 개체의 상태 DB 내용은 모두 동일하다.

 

계좌의 거래 내역을 포함한 잔액 조회는 일반적인 금융 서비스뿐만 아니라 블록체인 기반 금융 서비스에서도 매우 빈번하게 발생한다. 원장에는 거래가 단순 나열된 형태로 기록되기 때문에, 특정 계좌의 거래 내역 및 잔액을 확인하려면 기록된 모든 거래를 확인해야 한다. 이를 개선하기 위해 블록체인 참여 개체는 상태 DB에 계좌별 거래 내역 및 잔액을 정리하여 관리할 수 있다.

 

 

■ 트랜잭션 처리 과정

 

일반적인 블록체인 SW 플랫폼의 트랜잭션 처리 과정은 다음과 같다. 상세 과정은 블록체인 SW 플랫폼별로 다를 수 있다.

 

 

1. 블록체인에 기록이 요구되는 행위를 하려는 개체는 트랜잭션 생성 권한을 가진 개체에게 트랜잭션 생성을 요청한다.


2. 생성 요청을 받은 개체는 트랜잭션을 생성한다.


3. 트랜잭션을 생성한 개체는 트랜잭션을 네트워크 내의 다른 노드에게 전달한다.


4. 생성된 트랜잭션을 전달받은 노드는 트랜잭션이 올바른지 검증한다.

 

5. 블록을 생성할 수 있는 권한을 지닌 노드는 전달받은 트랜잭션들을 모아 블록을 생성한다.


6. 블록을 생성하는 과정에 스마트 컨트랙트가 포함되어 있다면 스마트 컨트랙트를 실행하고, 실행 결과를 블록에 포함한다.

※ 스마트 컨트랙트의 실행은 블록체인 SW 플랫폼에 따라 트랜잭션 생성 시점에 이루어질 수도 있다.


7. 블록을 생성한 개체는 블록을 다른 노드에게 전달한다.

※ 필요에 따라 트랜잭션과 블록의 전달은 여러 차례 이루어질 수 있다.


8. 생성된 블록을 전달받은 노드는 블록 헤더와 블록에 담긴 트랜잭션이 올바른지 검증한다.


9. 올바른 블록인 경우 노드는 자신의 원장에 새로운 블록을 반영하고, 자신의 상태 DB를 갱신한다.


10. 트랜잭션을 생성한 개체는 트랜잭션이 블록에 반영되면 요청 개체에게 작업이 완료되었음을 알린다.

 

 

합의 프로토콜

 

■ ㅇㄹㄴ

 

블록체인은 분산 컴퓨팅 기술에 기반을 두고 있으며 여러 참여 개체가 동일한 원장을 공유하기 위해 합의 프로토콜을 사용한다. 블록체인 네트워크에서는 일부 노드에 비잔틴 장애(내부 관리자의 악의적인 조작, 해킹 등)를 제외한 일반적인 장애(정전, 네트워크 연결 실패 등)가 발생하더라도 정상적으로 동작할 수 있는 합의 프로토콜이 사용된다. 

 

또한, 일부 노드에 일반적인 장애뿐만 아니라 비잔틴 장애가 발생하더라도 정상적으로 동작할 수 있는 합의 프로토콜이 사용되는 경우도 많다.


블록체인에서 사용되고 있는 합의 프로토콜들은 장애 내성, 단위 시간당 최대 트랜잭션 처리량(throughput), 트랜잭션이 변경될 수 없는 상태가 될 때까지 걸리는 시간(time to finality) 등의 관점에서 특성을 비교할 수 있다. 블록체인에서 사용되는 대표적인 합의 프로토콜은 다음과 같다.

 

 

 

스마트 컨트랙트

 

블록체인 스마트 컨트랙트는 모든 실행 결과가 블록체인에 기록되는 블록체인 시스템상의 컴퓨터 프로그램이다. 블록체인 스마트 컨트랙트는 입력 매개변수 외에는 블록체인에 기록된 데이터만을 사용하기 때문에 블록체인 시스템 내 어떤 참여 개체가 실행하더라도 같은 결과를 얻을 수 있으며, 누구나 결과를 검증할 수 있는 특성을 가진다.

 

■ 블록체인 스마트 컨트랙트 실행과정

 

상세 과정은 블록체인 SW 플랫폼별로 다를 수 있다.

 

1. 스마트 컨트랙트를 실행하려는 개체는 해당 스마트 컨트랙트의 이름과 실행에 필요한 입력 매개변수를 트랜잭션을 생성할 수 있는 개체에게 전달한다.


2. 트랜잭션을 생성할 수 있는 개체는 전달받은 내용을 기반으로 트랜잭션을 생성하고, 스마트 컨트랙트를 실행할 수 있는 개체에게 전달한다.


3. 스마트 컨트랙트를 실행할 수 있는 개체는 자신의 현재 상태 DB를 참고하여 스마트 컨트랙트를 실행하고 실행 결과를 전달받은 트랜잭션에 덧붙인 후, 블록 생성 노드에게 전달한다.


4. 블록 생성 노드는 전달받은 트랜잭션을 블록에 포함하고, 전달받은 실행 결과에 따라 자신의 원장과 상태 DB를 업데이트한 후 생성된 블록을 전파한다.


5. 블록을 전달받은 개체들은 각자 자신의 원장과 상태 DB를 업데이트한다.

 

 

위의 과정에서 블록체인 네트워크에 스마트 컨트랙트의 실행 결과가 포함된 트랜잭션이 공유되므로 블록체인 시스템 내 모든 개체는 자신의 상태 DB를 활용하여 스마트 컨트랙트가 올바르게 실행되었는지 검증할 수 있다.

 

■ 블록체인 서비스

 

탈중앙화 애플리케이션
탈중앙화 애플리케이션은 블록체인 솔루션에 참여하는 개체가 블록체인 시스템을 활용할 수 있도록 블록체인 시스템상에서 운영되는 애플리케이션이다. 애플리케이션 사용 개체는 탈중앙화 애플리케이션이 제공한 사용자 인터페이스를 활용하여 블록체인 내용 조회, 스마트 컨트랙트 실행 등의 작업을 요청할 수 있다. 작업 요청을 받은 탈중앙화 애플리케이션은 스마트 컨트랙트와 API를 사용하여 요청받은 작업을 수행한다.


오프체인 저장소
오프체인 저장소는 블록체인 시스템과 연관이 있지만, 블록체인 시스템 외부에 위치, 수행, 또는 운영되는 저장소이다. 블록체인은 블록을 삭제하지 않고 이어 붙이기만 하는 특성이 있어, 참여 개체가 저장해야 하는 데이터의 양이 지속해서 늘어날 수밖에 없다. 그러므로 대량의 데이터를 지속해서 블록체인에 기록할 경우,
모든 참여 개체가 대량의 데이터를 저장해야 한다. 또한, 블록체인의 데이터는 모든 참여 개체가 접근할 수 있으며, 한 번 기록된 데이터는 삭제할 수 없어 개인정보 등 민감 정보를 저장하기에 적합하지 않다. 이러한 문제를 해결하기 위해 대량의 데이터나 민감 데이터는 별도의 외부 저장소나 서버에 보관하고 블록체인에는 저장 위치, 데이터의 해시값, 메타 데이터 등만 기록하는 방법을 활용할 수 있다. 이는 블록체인 유지에
필요한 저장 데이터의 양을 줄일 수 있으며, 개인정보 등의 민감 데이터를 안전하게 보관할 수 있게 해준다.

 

블록체인 오라클
블록체인 오라클은 블록체인 시스템 외부에서 생성된 데이터를 이용하여 블록체인에 정보를 제공하는 서비스이다. 대부분의 블록체인 시스템은 외부에서 생성된 데이터 (온도 센서가 측정한 온도, 주식 시장의 주가, 전력 사용량 등)를 필요로 하는데, 외부 데이터에 직접 접근할 수 없으므로 블록체인 오라클을 이용해 데이터를 입력받는다. 따라서 블록체인 오라클이 제공해 준 데이터를 신뢰할 수 없다면, 제공된 데이터를 활용해
생성한 블록체인 시스템의 데이터 역시 신뢰할 수 없다. 이러한 신뢰 문제를 블록체인 오라클 문제라 한다. 이 문제를 해결하기 위해서는 신뢰할 수 있는 개체가 오라클을 관리하게 하거나 다수의 오라클을 활용하는 등의 대책을 마련할 수 있다.

 

 

댓글

Designed by JB FACTORY