블록체인

#5 트랜잭션

tworiver 2023. 7. 25. 11:34

트랜잭션이란?

블록체인은 분산형 데이터베이스 기술로, 거래 정보를 블록이라고 하는 체인 형태로 연결하여 기록하는 시스템입니다. 트랜잭션은 이러한 블록체인에서 핵심적인 요소로서, 사용자 간에 자산을 전송하거나 정보를 기록하는 등의 작업을 의미합니다.

블록체인에서의 트랜잭션은 일련의 단계로 이루어집니다. 아래는 트랜잭션이 어떻게 진행되는지를 자세하게 설명하는 과정입니다:

트랜잭션 요청:

블록체인 네트워크에서 트랜잭션이 시작됩니다.
사용자가 자산을 전송하거나 정보를 기록하고자 할 때, 해당 트랜잭션을 생성하여 네트워크에 전달합니다.
트랜잭션 검증:

트랜잭션은 블록체인 네트워크에 속한 노드들에 의해 검증됩니다.
노드들은 트랜잭션이 유효하고 정당한지 확인하는 프로토콜에 따라 검증합니다.
유효성 검사는 보통 해당 사용자가 자산을 소유하고 있는지, 중복된 트랜잭션은 없는지 등을 확인하는 과정을 포함합니다.
블록 생성:

검증이 완료된 트랜잭션은 새로운 블록을 형성합니다.
하나의 블록은 여러 개의 트랜잭션을 포함할 수 있습니다.
작업 증명 (Proof of Work) 또는 다른 합의 메커니즘:

대부분의 블록체인에서는 새로운 블록을 추가하기 위해 작업 증명이나 다른 합의 메커니즘을 사용합니다.
작업 증명은 일정 난이도 이상의 해시 값을 찾는 과정으로, 이를 통해 새로운 블록을 생성하는 노드를 선정합니다.
선정된 노드는 새로운 블록을 체인에 추가합니다.
블록 체인에 추가:

새로운 블록은 이전 블록과 연결되어 체인 형태를 이루게 됩니다.
블록체인은 변경 불가능한 구조를 가지므로, 이후에 수정되지 않고 영구적으로 유지됩니다.
블록체인 갱신:

모든 네트워크 참가자들에게 새로운 블록이 추가되었음을 알리고, 각 노드들은 자신의 복사본을 갱신합니다.
이후로는 이 새로운 블록을 포함한 체인이 기반이 되어 새로운 트랜잭션들이 진행됩니다.
이렇게 블록체인에서는 트랜잭션이 분산된 네트워크의 노드들에 의해 검증되고, 블록에 기록되며, 체인 형태로 이어집니다. 이 과정을 통해 블록체인은 보안성과 신뢰성을 높이면서 중앙화된 중개자 없이도 안전하게 거래를 처리할 수 있는 기술을 제공합니다.

 

트랜잭션 직렬화


트랜잭션 직렬화는 객체나 데이터를 바이트 스트림으로 변환하는 과정을 말합니다. 블록체인에서 트랜잭션 직렬화는 해당 트랜잭션을 블록에 기록하기 위해 바이트로 변환하는 과정을 의미합니다. 각 블록체인 플랫폼마다 직렬화 방법이 조금씩 다를 수 있으나, 여기에서는 Python을 사용하여 간단하게 직렬화하는 방법을 알려드리겠습니다.

예시로, 트랜잭션을 가진 Python 클래스가 있다고 가정해봅시다. 트랜잭션을 직렬화하려면 해당 클래스를 바이트로 변환하는 과정을 거쳐야 합니다.

 

import pickle

class Transaction:
    def __init__(self, sender, receiver, amount):
        self.sender = sender
        self.receiver = receiver
        self.amount = amount

# 트랜잭션 객체 생성
transaction = Transaction("Alice", "Bob", 10.0)

# 직렬화
serialized_transaction = pickle.dumps(transaction)
print("직렬화된 트랜잭션:", serialized_transaction)



위 예시에서는 Python의 pickle 모듈을 사용하여 직렬화를 수행하였습니다. pickle.dumps() 함수를 사용하여 transaction 객체를 직렬화하여 serialized_transaction에 저장하였습니다.

또한, 일반적으로 블록체인에서는 직렬화한 데이터에 해시 함수를 적용하여 블록체인의 블록에 포함되는 트랜잭션의 무결성을 보장합니다. 하지만 위 예시에서는 해당 과정은 다루지 않았습니다.

주의: pickle 모듈을 사용할 때, 직렬화할 클래스가 신뢰할 수 있는 출처에서 온 것이며, 보안에 민감한 정보를 담고 있지 않도록 주의해야 합니다. 블록체인에서 실제로 사용되는 트랜잭션 직렬화는 더 복잡하며, 보안을 고려해야 합니다. 이 예시는 단순히 직렬화 개념을 이해하는 데 도움을 주기 위한 것입니다.

'블록체인' 카테고리의 다른 글

#7 p2sh  (0) 2023.07.25
#6 스크립트  (0) 2023.07.25
#4 직렬화  (0) 2023.07.25
#3 타원곡선 암호  (0) 2023.07.25
#2 타원곡선  (0) 2023.07.25