블록체인은 크게 public 블록체인과 private 블록체인으로 구분된다. public은 누구나 참여할 수 있는 개방형 블록체인이며 private은 인트라넷처럼 허가받은 사용자만 접근 권한을 가지고 참여할 수 있는 폐쇄형 블록체인이다. 대표적인 private 블록체인으로는 하이퍼레저 패브릭이 있다.
구분 | Public 블록체인 | Private 블록체인 |
트랜잭션 검증 및 생성 | 누구나 | 허가된 사용자 |
속도 | 느림 | 빠름 |
탈중앙화 | 높음 | 낮음 |
합의 알고리즘 | PoW, PoS | BFT 계열 |
권한 | 누구나 | 관리자가 권한 부여 |
2세대 블록체인이라 불리는 이더리움은 비트코인 스크립트 시스템의 튜링 불완전성의 한계를 발전시켜 튜링 완전 언어인 Solidity와 EVM을 지원하여 스마트 컨트랙트의 다양성을 증대화시켰다. 현재 가장 유명한 블록체인이라 보면 되겠다. 간단하게 이더리움을 통해 public 블록체인을 알아보겠다.
1. 가스(Gas)
이더리움은 일정시간 동안 제한된 트랜잭션만 처리할 수 있기때문에 무분별한 네트워크의 사용을 방지하여 메모리 낭비를 줄이고자 가스라는 정책을 도입하였다. 가스는 EVM에서 트랜잭션을 하기위해 소모되는 비용으로 GasLimit * GasPrice의 트랜잭션 지불 비용이 든다. 일반적으로 GasLimit은 21000으로 고정되어 있지만, GasLimit이 연산에 충분하지 않게 설정된다면 오류가 발생하여 해당 트랜잭션은 정상적인 수행을 하지 못하게 된다. GasPrice는 GasLimit이 연산된 트랜잭션을 수행하며 소모되는 1 Gas당 가격이다. 이더리움 네트워크 내에서 GasPrice의 가격은 매우 유동적이며 높을수록 트랜잭션 수행의 우선순위가 높아진다.
2. 계정(Account)
이더리움의 계정은 외부 소유 계정(EOA, Externally Owned Account)과 컨트랙트 계정(CA, Contract Account) 2가지로 나눌 수 있으며 EOA는 일반적인 사용자 계정으로 CA보다 상위계정이다. EOA는 아무런 코드를 가지고 있지 않기 때문에 이 계정에서 메세지를 보내기 위해서는 개인키를 이용해 트랜잭션을 만들고 서명을 해야한다. 이와 다르게 CA는 메세지를 보낼 때 컨트랙트 생성할 때 사용했던 스마트 컨트랙트 코드를 실행하고 내부 저장공간에 데이터를 저장한다. 이것을 내부 트랜잭션이라고 한다.
3. 상태 머신(State Machine)
이더리움에서 state는 모든 계정의 모든 정보를 포함하는 데이터베이스이다. 아래 그림과 같이 14c5f8a가 bb75a980에게 10 eth를 보내는 트랜잭션이 state를 변경하는 행위이다. 이러한 상태 머신 구조의 핵심적인 머클 트리(Merkle Tree)는 신속하고 효율적으로 데이터를 저장하고 조회할 수 있도록 도와준다.
4. ERC(Ethereum Request for Comment)
이더리움 네트워크의 개선안을 제안하는 EIP(Ethereum Improvement Proposal)에서 관리하는 공식 프로토콜로 다양한 프로젝트에서 사용할 수 있도록 이더리움 개발 요구사항을 담은 문서 규약이며 간단히 말하면 표준 코드이다. 여러 가지가 있지만 대표적으로 쓰이는 표준인 ERC-20과 ERC-721은 아래와 같다
* ERC-20: 이더리움 토큰 표준
* ERC-721: 고유성을 가지는 NFT(대체 불가능 토큰) 표준
'블록체인 > [초보] 블록체인' 카테고리의 다른 글
IPFS란 무엇인가? (0) | 2023.02.14 |
---|---|
Private 블록체인 (하이퍼레저) (0) | 2023.02.13 |
블록체인의 핵심 기술 및 특징 (0) | 2023.02.11 |
블록체인의 개념 및 장단점 (0) | 2023.02.11 |