카테고리 없음

비트코인 송금 (트랜잭션)의 원리 및 채굴 작업증명(pow) 입금내역보기

ideas0161 2024. 12. 23. 01:43

 

 

비트코인은 보내는 사람, 받는사람, 검증하는 네트워크로 이루어진다.

네트워크의 역할은 거래가 올바른지 중개인 역할을 하며, 분산된 네트워크에서 작업이 이루어진다.

 

트랜잭션(Transaction)은

1.트랜잭션 생성

보내는 사람이 거래를 요청하면 보내는 사람의 정보와, 받는사람의 정보, 수수료를 포함한 트랜잭션을 생성하고 서명한다. 

 

2. 트랜잭션이 네트워크에 중개를 요청한다.

가) 네트워크는 이 트랜잭션에 사용할 코인이 보내는 사람의 것인지 확인한다.(개인키의 디지털 서명 검증)

나) 이 트랜잭션이 이전에 사용된적 있는지 확인한다.

다) 보내는 금액과 수수료는 정확한지 확인한다.

 

- 각 노드(네트워크) 참여자는 질의에 대한 답변을 한다. (노드는 프로그래밍된 언어임 사람 X, 채굴자는 블록 생성에 기여함) 

 

 

 

작업 완료된 노드를 블록에 추가하는게 채굴자의 역할이다.

 

블록은 블록헤더와 트랜젝션 데이터로 나뉘는데,

쉽게 요약하자면 자료구조의 Key-Value 개념으로 생각하면 된다. key 값으로 특정 블록을 찾고, Value값인 트랜잭션의 해쉬에 접근한다.

 

 

출처: ArrayList 검색이미지

 

//블록 생성

ArrayList<HashMap<String, Object>> blockchain = new ArrayList<>();

 

HashMap<String, Object> Block1 = new HashMap<>();

Block1.put("index", 1); //인덱스

Block1.put("timestamp", "현재시간"); 

Block1.put("previous_block_hash", "000000..."); // 해쉬함수

.....

blockchain.add(block);

 

A블록을 기록 후 B 블록은 A 블록의 해시함수(NEXT)를 찾아 연결시키고 다음 블록을 작성하는 식으로 나아간다. 
즉, 블록은 트랜잭션 데이터의 정보를 묶어 기록하는 데이터의 집합인데 이 집합을 연결하여 체인을 만든다. 그래서 블록 + 체인= 블록체인(Block chain)인 것이다.

 


블록의 생성과 연결을 설명하자면
1. 트랜잭션 검증: 트랜잭션이 유효한지 확인한다
2. 블록생성: 채굴자가 여러 트랜잭션을 모아 새 블록을 형성한다.
3. 작업증명(pow): 채굴자가 난이도 조건을 만족하는 값을 찾아 네트워크에 제출한다.
4. 블록연결: 새 블록이 이전 블록과 연결되어 체인이 형성된다.
 
비트코인은 pow 방식이다 현재 비트코인은 10분에 6.25BTC씩 채굴자에게 분배한다. 이론상으로는 개인이 전부 수령할 수도 있지만, 난이도가 높기에 채굴풀에서 얻은 보상은 기여도가 큰 수로 개인에게 분배된다.  

다른 증명 방식은
Pos: 코인을 많이 보유한 사람에게 블록 생성 권한 주는 방식
Poa: 신뢰할 수 있는 기관에게 블록 생성 권한을 주는 방식

채굴자가 이 트랜잭션을 모아 새 블록을 생성하면 그 블록에 포함된 트랜잭션은 1회의 컨펌(confirm)을 받는것이 된다. 여러번 컨펌 받는 것이 안정성이 좋다. 거래소는 충분히 컨펌된 것을 확인 후 입금을 받아준다.

 

트랜잭션은 여기서 볼 수 있다.

거래소에 있는 내 비트코인 지갑을 복사 후 붙여넣기 해보면 나의 송금 내역을 볼 수 있다.

사진에 내 거래소 주소를 입력했는데,  받는사람의 주소는 다른 이유는 거래소에서 가상의 해시함수를 발행 한 후 내부적으로 관리 후 거래소의 지갑으로 합치기 때문이다.
https://www.blockchain.com/explorer