블록체인 기술은 분산형 데이터베이스 시스템으로, 거래 기록이나 다른 데이터 종류를 연속된 블록으로 체인처럼 연결하여 저장하는 기술입니다.
블록체인에서 맨 처음의 블록은 시작 블록 혹은 제네시스 블록이라고도 불리며, 블록체인 네트워크가 수동으로 생성되거나 프로토콜이나 조건에 따라 자동적으로 생성됩니다. 시작 블록이 생성된 이후에는 네트워크 상에서 상품이나 코인 거래 등에 따라 트랜잭션이 발생하고 일정 기간의 트랜잭션들이 모여 하나의 블록을 이루는 형태로 동작하게 됩니다.
하나의 블록은 네트워크 상에서 검증자들에 의해 검증되며 검증이 완료된 이후에는 블록체인에 연결되며, 해시 값과 이전 블록의 정보나 거래자 간 정보 등을 담아 뻗어나가는 구조를 가지게 됩니다.
블록체인은 다음과 같은 핵심 요소와 장점을 가집니다.
탈 중앙화 : 중앙 집중식이 아닌, 네트워크 참여자들에 의해 운영됩니다. SPOF라고 불리는 단일 장애 지점이 없어 가용성과 보안성이 높습니다.
투명성 : 거래 기록은 해당 네트워크에 참여하는 사람들에게 공개되며, 기록된 데이터는 변경이 불가능합니다.
불변성: 한 번 블록체인에 추가된 데이터는 네트워크 참여자들의 합의에 의해서만 변경할 수 있으며, 이는 실질적으로 변경이 불가능하다는 것을 의미합니다. 이로 인해 데이터 조작이나 변조의 위험이 줄어듭니다.
암호화: 블록체인은 강력한 암호화 기술을 사용하여 데이터와 거래를 보호합니다. 이는 개인정보의 보안과 거래의 안전성을 강화합니다.
스마트 컨트랙트: 일부 블록체인(예: 이더리움)은 스마트 컨트랙트를 지원합니다. 스마트 컨트랙트는 미리 정의된 조건이 충족되면 자동으로 실행되는 계약으로, 중개인 없이 거래가 실행될 수 있게 합니다.
Block의 구조
블록체인에서 개별 Block의 구조는 다음과 같습니다.
블록체인은 먼저 Header와 Body로 구분됩니다.
Hash of the block
블록의 이름 정보입니다. 블록 해시는 블록의 헤더 정보인 버전과, 이전 블록의 해시 값 머클루트.. 등이 존재합니다. 블록 헤더 정보의 합산 정보를 구한 뒤 SHA-256으로 변환하면 블록의 블록 해시 값을 구할 수 있습니다.
트랜잭션이란, 가상자산을 참여자 간 전송, 수신할 때 저장되는 거래 기록입니다. 트랜잭션에는 거래 시간(블록 높이), 거래 당사자의 공개 주소, 거래된 자산에 관한 내용, 수수료 정보 등이 담겨 있습니다.
하나의 트랜잭션은 고유한 ID(트랜잭션 해시값)를 가지며, 이를 이용해 암호 화폐의 전달 여부, 그리고 거래 정보의 유효성을 검사합니다. 아래의 그림과 같이 A가 B에게 1BTC를 보내는 트랜잭션에서, A의 잔고가 1.005BTC(수수료 0.0005BTC 포함) 이상으로 문제가 없음이 확인되면 트랜잭션은 성공적으로 처리됩니다. 반면, 잔고 부족 등의 오류가 발견되면 트랜잭션은 실패합니다.
유효한 트랜잭션은 다음과 같은 기준을 충족해야 합니다.
디지털 서명이 유효함
충분한 잔액
이중 지출 없음: 동일한 코인이 두 번 이상 지출되지 않았음을 확인합니다.
네트워크 규칙 준수: 해당 트랜잭션이 블록체인 네트워크와 프로토콜 규칙을 준수하는지 검증합니다.
검증자(노드)
블록체인 거래는 검증자인 노드들이 해당 트랜잭션에 대한 검증을 수행하는데, 해당 노드는 블록 생성 및 체인을 추가하는 역할을 하는 서버나 컴퓨팅 자원을 의미합니다. 노드 구현은 다음의 2가지 예시가 있습니다.
채굴자 기반(PoW)
블록체인에서 말하는 합의 알고리즘(consensus algorithm)은 다수의 참여자들이 하나의 통일된 의사결정을 하기 위해 사용하는 알고리즘입니다. 완전무결한 탈중앙화를 추구하는 채굴자 기반 블록체인은 트랜잭션 정보를 기록한 일종의 분산장부로써, 각 노드가 각각의 장부를 가지고 있고 이 장부의 내용은 합의 알고리즘에 의해 동일하게 유지되는 것입니다.
PoW(작업증명, Proof of Work)는 블록체인 최초의 증명 방식으로 블록을 생성하기 위해 해시값을 찾는 작업을 특정한 난이도에 수행하고 이를 증명하는 것입니다. 이 증명은 ‘채굴(mining)’을 통해 이루어집니다.
검증인 기반(PoS)
이더리움 2.0에서는 '검증인'(Validator)이라고 불리는 노드들이 검증자의 역할을 합니다. 검증인들은 일정량의 코인을 네트워크에 예치(Staking)함으로써 거래를 검증하고 블록을 생성하는 권한을 얻습니다.
검증인은 거래의 유효성을 확인하고 블록을 생성하는 과정에서 보상을 받으며, 이들은 개인이나 조직이 운영하는 서버 또는 클라우드 기반의 컴퓨팅 자원이 될 수 있습니다.
거래를 확인하고 블록 정보를 검증할 검증인은 무작위로 선택됩니다. 이 시스템은 PoW처럼 경쟁적인 보상 기반 메커니즘을 사용하기보다 수수료를 징수할 사람을 무작위로 선정합니다. 블록이 둘 이상의 검증인에 의해 검증되고, 일정 수의 검증인이 블록이 정확하다고 확인하면 검증 작업이 마무리되고 종료됩니다.
PoS에서 검증 과정은 다음과 같은 동작을 포함합니다.
거래의 유효성 확인 ⇒ 각 검증인들은 디지털 서명이 올바른지, 거래를 발생시킨 계정이 충분한 잔액을 가지고 있는지 등 이 거래의 유효성을 확인하게 됩니다.
블록 생성 ⇒ 유효한 거래들(일정 기간의 트랜잭션 들)을 모아 새로운 블록을 생성합니다. 여기서유요한 거래들이란 성공한 트랜잭션의 집합을 의미합니다.
블록 제안 및 승인 ⇒ 생성된 블록을 블록체인 네트워크에 제안합니다. 다른 검증인들이 해당 블록체인이 정당하다고 판단하면 이를 승인합니다.
블록 체인에 추가 ⇒ 승인된 블록은 체인에 추가됩니다.
보상 받기 ⇒ 검증 과정을 성공적으로 마친 검증인은 거래 수수료와 함께 블록체인 네트워크에서 정한 보상을 받습니다. PoS에서는 블록 생성에 대한 고정 보상 외에도, 스테이킹한 코인의 양에 따라 일정 비율의 보상을 받을 수 있습니다.
블록 보상: 새로운 블록을 성공적으로 생성하고 네트워크에 추가할 때 받는 보상입니다. 이는 해당 블록체인 네트워크가 생성하는 신규 코인 또는 토큰 형태로 지급될 수 있습니다.
거래 수수료: 블록에 포함된 거래를 처리할 때 거래 당사자가 지불하는 수수료입니다. 이 수수료는 해당 거래를 검증하고 블록에 포함시킨 검증인에게 지급됩니다.
트랜잭션 거래 방식
UTXO 모델
비트코인이 차용하고 있는 모델입니다.
UTXO는 미래에 사용할 수 있는 이전 트랜잭션의 출력입니다.
UTXO 체인에는 계정이 없습니다. 대신 코인은 UTXO 목록으로 저장되며, 트랜잭션은 기존 UTXO를 소비하고 그 자리에서 새로운 UTXO를 생성함으로써 만들어집니다.
잔고는 지정된 주소로 제어되는 UTXO의 합계입니다.
모든 UTXO는 1회성이며, 한 번 사용되면 새로운 UTXO로 대체 된다고 생각하면 좋습니다.
한 번 사용하면 사라지는 UTXO의 특징으로 인해 익명성과 보안성이 강해진다는 장점이 있지만 매 UTXO마다 수수료를 부과되게 때문에 비용적인 측면에서는 단점이 있습니다.
트랜잭션을 병렬로 처리할 수 있기 때문에 확장성이 향상됩니다.
어떤 State도 추적하지 않기 때문에 Smart Contract를 구현하기가 어렵다.
예를 들면, ‘Max’가 자신의 Wallet으로 세 사람에게 1BTC, 2BTC, 3BTC를 송금 받았다고 가정한다면 현실 세계에서 우리는 당연하게도 6BTC가 Max의 Wallet에 남아있다고 생각하겠지만 그렇지 않습니다. Max의 Wallet에는 3개의 UTXO가 저장되어 있습니다.
더 구체적으로 설명하자면, Alice의 Wallet에 10BTC가 있고 Bob의 Wallet에 1BTC가 있습니다. Alice가 Bob에게 8BTC를 보낸다면, 기존의 10BTC 정보가 들어있는 UTXP(1)이 UTXO(3): 8BTC와 UTXO(4): 1.99BTC로 새롭게 만들어지고 이 트랜잭션은 다시 Alice와 Bob의 Address로 들어가게 됩니다.
계좌/잔고 모델
이더리움이 차용하고 있는 모델입니다.
Alice 계좌에 10BTC가 있고 Bob 계좌에 1BTC가 있다면, Alice가 Bob에게 8BTC를 보냈을 때Alice 계좌에는 2BTC가 되고 Bob은 9BTC가 됩니다.
총 잔액만 표시합니다.
외부소유계정인 EOA를 사용합니다. EOA는 Wallet이라고 생각하면 좋습니다.
public key : 계좌 번호의 개념
private key : PIN이나 비밀번호 개념
컨트랙트 계정인 CA를 사용합니다. 이더리움은 CA와 Smart Contract를 사용하여 다양한 기능을 구현할 수 있습니다. EOA와 달리 개인키인 private key로 통제할 수 없으며 특정 조건을 충족했을 때 실행되는 컨트랙트 코드가 존재합니다.
EOA가 트랜잭션을 발생시키고, 이 트랜잭션이 이더리움 네트워크에 전송되어 검증 및 실행 과정을 거친 후, 그 결과가 블록체인에 기록되는 구조입니다. CA(스마트 컨트랙트)는 이 과정에서 트랜잭션을 실행하는 '주체'로서 작동합니다.
즉, 스마트 컨트랙트에 접근하기 위한 주소가 곧 컨트랙트 계정입니다.
트랜잭션의 구성
위 사진은, 이더리움의 트랜잭션 거래 사진입니다.
Txn Hash : 트랜잭션 해쉬값인 트랜잭션 고유 ID입니다.
Method : 해당 트랜잭션이 수행한 작업을 의미합니다.
Block : 해당 트랜잭션이 발생시킨 블록 높이(거래시간)을 의미합니다.
Age / Date Time(UTC) : 트랜잭션이 발생한 시간을 표시합니다.
From : 보내는 사람의 지갑 주소입니다.
To : 받는 사람의 지갑 주소입니다.
Txn Fee : 해당 트랜잭션이 지불한 트랜잭션 수수료 입니다.
트랜잭션의 세부 거래 내용입니다.
Transaction Hash : Txn Hash과 같습니다.
Status : 트랜잭션 상태로, 성공이면 success 실패면 fail로 나타납니다.
Block : 위와 같습니다.
Timestamp : 트랜잭션이 발생한 날짜와 시간을 의미합니다.
Transaction Action : 트랜잭션이 수행한 주요 작업들을 보여줍니다.
From : 위와 같습니다.
Interacted With (To) : 위와 같습니다.
Tokens Transferred : 전송된 토큰의 정보를 표시합니다.
Value : 트랜잭션 과정에서 전송된 이더리움의 액수와 그 달러 가치가 표시됩니다.
Trasaction Fee : 트랜잭션 비용입니다.
Smart Contract
스마트 컨트랙트는 계약 코드를 통해 스스로 실행되는 전산화 계약이라고 정의되며, 블록체인 기술을 활용해 제3의 인증기관 없이 개인 간 계약이 이루어질 수 있도록 하는 기술입니다.
스마트 컨트랙트는 이더리움의 창시자인 비탈릭 부테린(Vitalik Buterin)이 이더리움에서 스마트 컨트랙트를 구현하면서 본격적으로 사용되기 시작했습니다. 스마트 컨트랙트는 블록체인을 활용했기 때문에 뛰어난 보안성을 가지면서도 공신력이 있는 제3자 혹은 기관이 필요하지 않다는 점에서 블록체인이 추구하는 탈중앙화(decentralized)를 구현했다는 평가를 받고 있습니다.
스마트 컨트랙트의 기본 성질은 다음과 같습니다.
관측가능성(observability) : 스마트 컨트랙트는 서로의 계약 이행 가능성을 관찰하거나 성과를 입증할 수 있어야 합니다.
검증가능성(verifiability) : 계약을 이행하거나 위반할 경우 계약 당사자들이 이를 알 수 있어야 합니다.
프라이버시(privity) : 계약 내용은 계약에 필요한 당사자만 알 수 있어야 합니다.
강제 가능성(enforceability) : 계약이 이루어질 수 있도록 구속력이 있어야 합니다.
어떻게 작동하는가?
계약 내용을 스마트 컨트랙트 소스 코드로 작성하여 블록체인 네트워크에 전송하면 네트워크 참여자(노드)들의 유효성 검증이 이뤄지며, 검증 완료 시 해당 스마트 컨트랙트가 포함된 블록이 생성되며 배포됩니다. 스마트 컨트랙트 소스 코드는 솔리디티와 같은 프로그램 언어를 사용하여 작성됩니다.
이 후 배포된 블록을 계속해서 주시하며, 블록에 변화가 생겼을 때 조건을 충족하면 명령을 실행시키기 위한 실행 비용과 상태변경 트랜잭션을 생성합니다.
실제 실행은 다음 이미지와 같이 이루어집니다.
스마트 컨트랙트 Pros And Cons
Pros
자율성 : 블록체인 내에서 진행되기 때문에 공신력을 가진 제 3자, 혹은 기관이 필요하지 않습니다.
비용 절감 : 블록체인에서 관련 계약, 거래 내역 등을 보증할 수 있는 제3자나 공신력 있는 기관이 필요하지 않기 때문에 비용 절감의 효과를 가질 수 있습니다.
신뢰성 : 블록체인 내 스마트 컨트랙트에 의해 계약이 공정하게 진행되며 문서의 위변조가 극히 어려워 뛰어난 신뢰성을 가집니다.
보안성 : 신뢰성과 연결된 것으로 문서가 암호화되어 블록체인 내 분산 원장 기술에 의해 안전하게 보관됩니다.
Cons
계약 성립시 불공정 합니다. 스마트 컨트랙트의 계약에 따르면 문제가 되지 않지만 도의적으로 문제가 될 수 있습니다. 계약을 잘 지 키도록 지원할 뿐 현명한 계약을 보장하지는 않습니다.
쉽게 위,변조가 불가능하다는 것이 큰 장점이지만 반대로 변경이 불가능하다는 점이 단점으로 작용됩니다. 2016년 DAO(탈중앙화 자치 조직)가 스마트 컨트랙트 코드의 결점으로 해킹을 당해 수백만 이더를 도난당한 일이 있었습니다. 하지만 블록체인 상에 기록된 코드를 수정할 수 없어 도난당한 이더리움을 제자리로 돌려놓는 하드포크를 진행하게 된 사례가 있습니다.
블록체인 언어인 Solidity는 타입 명령어, 생태계 등이 부족하여 개발의 어려움이 존재합니다.
스마트 컨트랙트는 현실 세계의 자산과도 연동될 수 있기 때문에 블록체인 외부의 이벤트나 조건에 대한 정보 수집과 저장의 어려움이 있습니다. 외부에서 데이터를 따로 관리해야 하는데, 관리 포인트가 늘어나는 것과 데이터 간 동기화의 어려움으로 인해 문제가 발생하는 것을 의미합니다.
DeFi
DeFi(Decentralized Finance)는 탈중앙화된 금융으로 인터넷을 사용할 수 있는 모든 사람에게 열려 있는 금융서비스입니다. 기존의 금융서비스와 다르게 블록체인 기술을 사용하며, 중앙 기관 없이 탈중앙화된 환경에서 누구나 자유롭게 이용할 수 있는 금융서비스를 총칭합니다.
기존 금융서비스와 달리 인증서와 같은 본인 인증 과정이 필요없으며, 인터넷만 연결되어 있다면 예금, 결제, 보험, 투자 등 다양한 금융서비스를 이용할 수 있습니다. 모든 거래는 금융사(중개자)의 서버를 통해 거래되는 것이 아닌 블록체인 기반의 탈중앙화 거래소(DEX)에서 스마트 컨트랙트를 통해 이뤄집니다.
디파이에서만 볼 수 있는 특이한 형태의 금융방식도 있는데 대표적으로 “유동성 공급(LP, Liquid Provide)”과 스테이킹(Staking)이 있습니다.
유동성 공급
유니스왑, 팬케이크스왑 등의 탈중앙화 거래소에서 이뤄지는 모든 코인 거래는 스왑이라고 불리며 스마트 컨트랙트를 통해 코인간 물물교환 방식의 거래를 지원하는데요, 이러한 코인 거래에 활용할 수 있는 코인을 거래소에 제공하는 것을 유동성 공급이라 합니다.
스테이킹
코인 자산을 블록체인 네트워크에 예치시켜 데이터 검증에 기여하고 보상을 받는 것을 뜻하며, 지분증명방식(Pos) 또는 위임지분증명(DPoS) 알고리즘을 채택한 블록체인에서 가능합니다. 특정 사용자들이 디지털 자산을 한곳에 모아 지분(영향력)을 결집시키는 그룹을 스테이킹 풀이라고 하며, 최종 블록 보상이 해당 스테이킹 풀에서 발생하면 그 데이터 검증 보상을 각자의 기여도에 따라서 받게 됩니다.
NFT
NFT(Non-Fungible Token)란 대체가 불가능한(non-fungible) 토큰(token) 즉, 세상에 단 하나뿐인 가상자산을 의미합니다.
NFT는 블록체인 기술을 이용하여 작품사진에 고유의 일련번호 즉, 인식표를 부여하여 대체불가능한 콘텐츠로 만들어 줍니다. 그래서 NFT가 적용된 디지털 콘텐츠는 일반적으로 희소성을 가진 고유한 자산으로 인식되는 것입니다. 내가 내 작품을 플랫폼에 등록해서 토큰화시켜 거래하는 경우 내 작품의 소유권과 거래내역이 NFT 블록체인상에 빠짐없이 기록되기 때문에 거래관계에 대한 위변조도 불가능합니다. 그렇기 때문에 ‘특정 자산을 고유하게 표현할 수 있는 도구’로 NFT를 사용할 수 있는 것입니다.
NFT 정보가 블록체인에 저장되어 관리되기 때문에 원본으로서의 가치를 유지할 수 있는 것 입니다.
NFT 민팅(Minting)
NFT 민팅은 새로운 NFT를 생성하고 블록체인에 등록하는 과정을 말합니다. 즉, 디지털 자산(예: 디지털 아트, 음악, 게임 아이템 등)을 블록체인에 영구적으로 기록하여 NFT로 전환하는 것입니다. 이 과정을 통해 디지털 자산은 고유한 소유권 정보를 가지게 되며, 이는 블록체인 상에서 검증 가능해집니다. 민팅은 NFT의 생성과 등록을 의미하기 때문에, NFT 시장에서 매우 중요한 단계입니다.
NFT 브리딩(Breeding)
NFT 브리딩은 특히 일부 게임이나 수집품에서 볼 수 있는 과정으로, 두 개 이상의 NFT를 결합하여 새로운 NFT를 생성하는 것을 말합니다. 예를 들어, 일부 NFT 기반 게임에서는 사용자가 자신의 캐릭터(NFT)를 다른 캐릭터와 '교배'하여 새로운 특성을 가진 캐릭터(NFT)를 얻을 수 있습니다. 브리딩은 새로운 NFT를 만드는 한 방법이지만, 이 과정은 기존 NFT의 특성을 조합하거나 변형하여 새로운 가치를 창출하는 데 중점을 둡니다.
요약
NFT 민팅: 디지털 자산을 NFT로 변환하여 블록체인에 처음으로 등록하는 과정.
NFT 브리딩: 두 개 이상의 NFT를 결합하여 새로운 NFT를 생성하는 과정. 주로 게임이나 수집품 분야에서 사용됩니다.
DApp
디앱(DApp, Decentralized Application)이란 탈중앙화된 분산형 Application을 의미합니다. 기존 중앙화된 서버가 중앙 서버의 데이터베이스에 데이터를 저장하고 운용역시 중앙 서버를 기준으로 관리 됐다면, DApp은 중앙 서버 없이 블록체인 네트워크에 참여하는 수 많은 사용자나 검증자들을 통해 관리됩니다.
DApp은 Smart Contract 개념이 도입된 이후부터 본격적으로 사용되기 시작하여, 현재는 DAO / DeFi / NFT / P2E(Play to Earn) 등 다양한 형태로 발전하고 있습니다.
예를 들어 가상자산 시장에서 가장 많이 사용되는 디앱은 탈중앙화 거래소(DEX, Decentralized Exchange)입니다. 특정 운영 주체가 거래를 매개하는 중앙화된 거래소와는 달리 탈중앙화 거래소는 중간 매개자 없이 스마트 컨트랙트를 통해 유저와 유저가 직접 거래하게 됩니다.
이더리움과 Gas
BlockChain 네트워크 상에서는 모든 거래에 수수료 개념의 사용료가 발생합니다. 결국 분산형 네트워크이며 탈 중앙화된 거래를 지향하는 블록체인도 어딘가의 리소스를 사용하여 네트워크가 운용되는 것이기 때문에 수수료 발생은 필연적입니다.
가스는 블록체인 네트워크를 사용하면서 여러 유형의 작업을 수행하기 위한 기준이 되는 Computer Resourece 측정 단위입니다. 간단한 거래부터, NFT 발행까지 이더리움의 모든 작업은 가스가 소모됩니다. 결국, 일반적인 이더리움 기반 블록체인 네트워크에서 사용되는 거래 비용이 “Gas”입니다.
가스 가격은 거래 유형과 처리되는 동안의 블록체인 네트워크의 혼잡도에 따라 수준이 달라집니다. 거래를 완료하려는 사용자(Transaction이 많은 경우)가 많을 수록 비용이 올라갑니다.
이더리움에서 가스는 다음과 같은 내용들을 포함하고 있습니다.
목적: 트랜잭션 전송이나 스마트 계약과의 상호 작용과 같은 Ethereum 네트워크의 모든 작업에는 계산 작업이 필요합니다. 이 작업은 ‘가스’로 측정됩니다.
비용: 블록체인 네트워크 사용자는 블록체인에서 수행되는 계산 작업에 대해 수수료를 지불해야 하므로 가스는 무료가 아닙니다. 이것을 ‘가스 요금’이라고 합니다.
지불 토큰: 가스 요금은 일반적으로 네트워크의 기본 토큰으로 지불됩니다. 이더리움의 경우 ETH 토큰은 가스 요금을 지불하는 데 사용됩니다. Cronos의 경우 CRO는 가스 비용을 지불하는 데 사용됩니다.
가스 가격: 거래를 실행하는 데 필요한 가스의 양은 Gwei라고 알려진 가스 가격에 따라 다릅니다. 네트워크가 혼잡하면 가스 가격이 높아집니다.
검증자(Validator): 검증자는 블록체인에서 거래를 검증하고 그 대가로 이러한 가스 수수료 형태로 보상을 받습니다. 이는 거래를 검증하는 인센티브 역할을 합니다.
스비는 ‘가스가격 * 가스 한도’로 계산할 수 있습니다. 일반적으로 이더리움에서 표준 가스 한도는 21,000가스입니다. 가스 가격은 이더의 하위 단위인 Gwei(기가웨이)를 사용하는데, 통상 1,000,000,000 Gwei = 1ETH 입니다.
예를 들어서 가스 가격이 10Gwei라고 하면 가스비는 210,000Gwei라는 것을 알 수 있습니다. 210,000Gwei는 0.00021ETH 이므로, 0.00021 * 1 ETH를 계산하면, 이더리움 네트워크상에서 특정 트랜잭션을 발생시키기 위해 얼마의 수수료를 지불해야하는지 알 수 있습니다.