티스토리 뷰
트랜잭션과 합의 알고리즘 – 블록체인의 신뢰를 만드는 기술
1. 트랜잭션(Transaction)이란?
트랜잭션은 블록체인 네트워크에서 자산(토큰, NFT 등) 또는 데이터가 이동하는 거래를 의미한다.
블록체인은 모든 트랜잭션을 검증하고, 정해진 합의 알고리즘에 따라 블록에 저장한다.
✅ 탈중앙화된 방식으로 신뢰성을 유지
✅ 디지털 서명을 통해 위변조 방지
✅ 모든 트랜잭션이 블록체인에 영구 저장됨
2. 트랜잭션의 구조와 데이터 저장 방식
① 트랜잭션의 주요 구성 요소
속성 설명
트랜잭션 ID(TXID) | 트랜잭션을 식별하는 해시 값 |
보낸 사람(Sender Address) | 송신자의 공개키 (Public Key) |
받는 사람(Receiver Address) | 수신자의 공개키 (Public Key) |
서명(Digital Signature) | 송신자가 생성한 암호화된 서명 |
트랜잭션 입력(Input) | 사용된 이전 트랜잭션 (UTXO) |
트랜잭션 출력(Output) | 새로운 트랜잭션을 위한 데이터 |
🔹 트랜잭션 예제 (Python 코드)
import hashlib
import json
class Transaction:
def __init__(self, sender, receiver, amount):
self.sender = sender
self.receiver = receiver
self.amount = amount
self.txid = self.calculate_txid()
def calculate_txid(self):
tx_data = json.dumps(self.__dict__, sort_keys=True)
return hashlib.sha256(tx_data.encode()).hexdigest()
tx = Transaction("Alice", "Bob", 10)
print("Transaction ID:", tx.txid)
✅ 트랜잭션 ID는 데이터 해싱을 통해 생성
✅ 입출력 데이터와 서명으로 무결성을 보장
3. 트랜잭션 검증 과정 (디지털 서명 활용)
블록체인은 트랜잭션이 올바르게 생성되었는지 **디지털 서명(Digital Signature)**을 활용하여 검증한다.
① 공개키 암호화(Public-Key Cryptography) 개념
블록체인은 **공개키(Public Key)와 개인키(Private Key)**를 사용하여 트랜잭션을 보호한다.
- 개인키(Private Key): 사용자가 소유한 비밀 키 (서명 생성)
- 공개키(Public Key): 개인키로 생성된 공개 키 (서명 검증)
🔹 Python을 활용한 서명 생성 및 검증 예제
from ecdsa import SigningKey, VerifyingKey, SECP256k1
# 개인키(Private Key) 생성
private_key = SigningKey.generate(curve=SECP256k1)
public_key = private_key.verifying_key
# 메시지 서명
message = b"블록체인 트랜잭션"
signature = private_key.sign(message)
# 서명 검증
is_valid = public_key.verify(signature, message)
print("서명 유효성:", is_valid)
✅ 공개키와 개인키를 활용한 신뢰성 확보
✅ 누구나 서명을 검증할 수 있지만, 개인키가 없으면 변조 불가능
4. 합의 알고리즘(Consensus Algorithm)이란?
합의 알고리즘은 네트워크 참여자들이 어떤 블록을 승인할 것인지 결정하는 규칙이다.
✅ 트랜잭션 검증을 수행하고 네트워크의 무결성을 보장
✅ 악의적인 행위를 방지하고 신뢰할 수 있는 네트워크 유지
5. 주요 합의 알고리즘 비교
① PoW(Proof of Work, 작업 증명) – 비트코인 방식
✅ 작업을 통해 블록을 채굴 (연산 문제 해결)
✅ 높은 보안성, 그러나 전력 소비가 많음
🔹 PoW 블록 마이닝 예제
import hashlib
difficulty = 4 # 4개의 0이 앞에 있어야 함
nonce = 0
while True:
data = f"블록 데이터 {nonce}".encode()
hash_result = hashlib.sha256(data).hexdigest()
if hash_result[:difficulty] == "0" * difficulty:
print("블록 채굴 성공:", hash_result)
break
nonce += 1
② PoS(Proof of Stake, 지분 증명) – 이더리움 2.0 방식
✅ 네트워크 참여자의 지분(Staking)으로 블록 생성
✅ PoW보다 에너지 효율적
🔹 PoS 기본 개념
- 사용자가 자신의 코인을 스테이킹하면, 블록 생성 기회가 증가
- 많은 코인을 보유한 노드일수록 블록 생성 확률이 높음
③ PBFT(Practical Byzantine Fault Tolerance, 비잔틴 장애 허용)
✅ 일정 수의 노드가 동의하면 블록이 승인됨
✅ 비트코인, 이더리움보다 빠른 합의 방식
✅ 허가형 블록체인(프라이빗 네트워크)에서 주로 사용
🔹 PBFT의 기본 과정
- 클라이언트 요청 → 트랜잭션 제출
- 리더 노드가 트랜잭션을 블록으로 생성
- 모든 노드가 블록을 검증 후 합의 수행
- 2/3 이상의 노드가 승인하면 블록이 블록체인에 추가됨
6. 블록체인 공격과 해결 방법
① 51% 공격(해시레이트 공격)
- 한 채굴자가 전체 네트워크 해시의 51% 이상을 점유
- 임의로 트랜잭션을 변경하거나 중복 사용(Double Spending) 가능
✅ 해결 방법: PoS 도입, 네트워크 참여자 분산, 난이도 조절
② 이중 지불(Double Spending) 문제
- 동일한 코인을 여러 번 사용할 가능성
- 비트코인은 PoW를 통해 이중 지불을 방지
✅ 해결 방법: PoW, PBFT, 블록 확인(Confirmations) 강화
7. 결론
✅ 트랜잭션은 블록체인의 핵심이며, 디지털 서명으로 보호됨
✅ 합의 알고리즘을 통해 신뢰할 수 있는 네트워크를 유지
✅ PoW, PoS, PBFT 등 다양한 합의 방식이 존재
📌 다음 글에서는 블록체인의 보안성과 해킹 방어 기술을 다룰 예정 🚀
'study > 블록체인' 카테고리의 다른 글
블록체인의 성능 최적화 및 확장성 솔루션 (0) | 2025.03.17 |
---|---|
GatsbyJS에서 페이지네이션(Pagination) 구현하기 (0) | 2025.03.16 |
블록체인의 보안 및 해킹 방어 기술 (0) | 2025.03.16 |
블록 및 체인의 구조 – 블록체인의 핵심 원리 (0) | 2025.03.16 |
블록체인이란? 개념과 원리 (0) | 2025.03.16 |
- Total
- Today
- Yesterday
- PostgreSQL
- gatsbyjs
- 스마트 컨트랙트
- fastapi
- rag
- NestJS
- AI 자동화
- seo 최적화 10개
- github
- 관리자
- Ktor
- Docker
- SEO최적화
- Webpack
- llm
- CI/CD
- Next.js
- LangChain
- REACT
- 웹개발
- SEO 최적화
- 개발블로그
- nextJS
- App Router
- AI챗봇
- 프론트엔드
- kotlin
- Prisma
- nodejs
- 백엔드개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |