생소했던 블록체인
블록체인에 대해 전혀 아는바가 없었다. 블록체인과 비트코인의 차이점에 대해서도 모르고 있엇다. 비트코인의 폭발적인 인기로 블록체인이 주목을 받았을 때에도 블록체인에 대해 잘 알지 못하다가
이번에 스터디를 통해 공부를 시작하게 되었다. 물론 블록체인의 깊이 있는 것까지 들여다 보지는 않았지만 전혀 모르던 것에서
아는 분야로 바뀌었다. 이제는 비트코인은 블록체인 기술을 사용한 하나의 구현 예에 불과하다 라는 것을 다. 물론 블록체인 기술은 비트코인을 구현하기 위해 만들어졌다는 사실도 알고 있다.
블록체인에 대해 공부하면서 가장 어려웠던 것은 생소한 용어들이었다. 용어들을 하나하나 이해하는데 많은 시간이 걸렸었다.
“블록체인 이야기 No.1” 에서는 블록체인에 대한 설명과 더불어 공부할 때 생소했던 용어들에 대해 정리해 보고자 한다.
블록체인에 대한 초보자의 정의
블록체인은 탈중앙화된 원장을 생성하기 위해 사용되는 데이터 구조이다.
또한, 블록체인은 블록들이 체인처럼 순차적인 방식으로 이루어져 있다는 의미를 가진.
블록은 일련의 거래목록, 이전 블록의 해시, 타입스탬프(블록생성시점), 블록 보상 값, 블록 번호 등으로 구성된다.
모든 블록은 이전 블록의 해시를 가지고 있으므로 서로 간에 연결된 블록체인을 생성한다.
네트워크 내 모든 노드는 블록체인의 사본을 보유하고 있다.
작업증명(proof of work), 지분 증명과 같은 다양한 합의 프로토콜이 블록체인을 안정하게 유지할 수 있도록 도와준다.
합의 프로토콜에 따라 블록이 생성되거나 블록체인에 추가되는 방식이 다르다.
작업 증명의 경우 블록체인을 안전하게 유지하기 위해 채굴이라는 절차에 따라 블록이 생성된다.
이러한 구조의 가장 큰 장점은 애플리케이션을 투명하고도 안정하게 만든다는 것에 있다.
이는 사기 행위를 방지하고 데이터가 변형되는 것을 방지 할 수 있으며,
구현 및 사용 방식에 따라 다른 문제들을 해결하는 데도 사용할 수 있다.
낯설었던 용어들 <블록체인 & 이더리움>
-
비잔티움 장군 문제
악의적인 참가자에 의한 부정, 변조 : 누구나 참가할 수 있는 네트워크에는 악의적인 참가자가 존재할 가능성도 있다. 의도적으로 부정거래를 만들어내거나 거래 결과를 자신에게 유리하게 변조할 가능성이 높다.
비트코인에서는 이러한 문제를 블록체인, 작업 증명, 전자 서명 과같은 방법을 통해 해결책을 제시하고 있다. -
p2p 네트워크
컴퓨터끼리 같은 목적으로 연결해 네트워크를 형성하는 방식이다. 어떤 컴퓨터도 같은 처리를 할 수 있기 때문에 한대가 정지해도 시스템 전체에는 영향을 주지 않는 특징을 가진다. 상대적인 개념으로는 서버-클라이언트가 있다. p2p는 이것에 반대되기 때문에 p2p 네트워크의 각 노드는 서비스를 사용하는 동시에 서비스를 제공하는 기능을 한다.
-
전자 서명, 해시 함수
트랜잭션(거래)를 발생시킨 사람의 정당성을 보증하거나 거래, 블록체인 변조 방지, 암호화 등 보안과 관련된 기능이다.
-
합의 알고리즘
p2p 네트워크와 같은 분산 네트워크 내에서 하나의 결과에 대한 합의를 얻기 위한 알고리즘이다. 블록체인을 여러 노드에서 공유하기 위한 가장 중요한 구조라고 할 수 있다. 그 예로는 작업증명과 지분증명 같은 것이 있다.
-
작업증명(pow) / 지분증명(pos)
컴퓨팅파워를 사용의 블록의 해시값을 찾아내는 행위이다. 이렇게 찾아낸 해시값으로 블록을 생성하고 그것에 따른 보상을 받게된다. 즉 채굴의 보상을 의미한다. 하지만 작업 증명은 여러명이 한개의 해시값을 위해 경쟁했다면 결론적으로 해시값을 찾은 한사람만 그 보상을 받게 되는 단점이 있다. 이것을 보안하기 위해 나온것이 지분증명 합의 알고리즘이다.
-
가스
가스는 계산 단계의 측정단위이다. 모든 트랜잭션은 가스 한도와 가스당 지불할 의사가 있는 수수료를 포함해야한다. 채굴자는 트랜잭션을 포함하고 수수료를 징수할 수 있는 선택권이 있다. 만약 트랜잭션에 사용되는 가스가 가스 한도와 같거나 작은 경우 트랜잭션은 처리된다. 전체 가스가 가스 한도를 넘는 경우에는 트랜잭션은 여전히 유효하고 수수료가 채굴자로부터 징수될 수 있다는 것을 제외하고는 모든 변경사항이 취소된다.
-
위스퍼와 스웜
각각 탈 중앙화된 커뮤니케이션 프로토콜과 탈 중앙화된 스토리지 플랫폼이며 이더리움 개발자들이 개발하였다.
위스퍼는 노드가 네트워크 내에서 서로 통신할 수 있게 하며 브로드 캐스팅, 사용자 대 사용자, 암호화된 메세지 등을 지원해준다. -
geth (go-ethereum)
이더리움, 위스퍼, 스웜 노드를 구현한 것이다. geth는 이 모든 기능 또는 선택된 기능을 위해 사용될 수 있다.
geth는 CLI 애플리케이션이며 go 프로그래밍 언어로 작성되었고, 모든 주요 운영체제에서 사용할 수 있다.
geth 설치에 대한 이야기는 나중에 포스팅하도록 하겠다. -
이더리움 지갑
이더리운 지갑은 계정을 생성하고, 이더를 송금하고, 컨트랙트를 배포하고, 컨트랙트의 함수를 호출하는 등의 다양한 일을 할 수 있는 이더리움의 UI 클라이언트이다.
이더리움 지갑은 IPC를 통해 geth와 통신한다. -
미스트
이더리움, 위스퍼, 스웜의 클라이언트이다. 트랜잭션을 전송하거나 위스퍼 메시지를 전송하거나 블록체인을 검사하는 등의 일을 한다.
생소하고 낯선 것으로 부터의 해방
블록체인이 무엇인지에 대해 나름대로 정리 할 수 있게 되었다. 또한 이렇게 정리를 하면서 신뢰에 기반을 둔 모든 곳에서 블록체인이 활용될 수 있을 거라는 생각을 했다. 어떠한 것들에 활용되었는지에 대해 이야기 하는 것을 주제로 다음 포스팅을 준비할 것이다.
이 글은 ‘블록체인 구조와이론 [위키북스]’ 를 참고하여 쓰어진 글임을 알려드립니다.
Comments