Jason Dev
About
Bitcoin Transaction 이해하기 (1)
published: 2023-10-08
bitcoin
transaction
segwit
fee

비트코인 트랜잭션의 각 필드가 어떤 내용을 담고있는지 알아보자.

아래는 blockstream.info에서 확인할 수 있는 특정 트랜잭션 정보이다.

각 항목에 대해 알아보자

STATUS

이 트랜잭션이 포함된 블록의 높이가 최신 블록 높이 기준으로 얼마나 차이가 나는지 나타낸다. 따라서 새로운 블록이 채굴될 때마다 이 수치도 증가한다.

트랜잭션이 블록에 포함됐다고 하더라도 채굴자들 사이에 이견이 생기면서 되돌려질 가능성이 존재한다. 이 수치가 높을 수록 되돌리기 힘들기 때문에 거래소 등 비트코인 입금을 받는 서비스에서는 일정 수치 이상의 confirmation이 되어야 정상 입금으로 인정한다.

INCLUDED IN BLOCK

이 트랜잭션이 포함된 블록의 해시값을 의미한다.

BLOCK HEIGHT

최초 블록을 시작으로 이 트랜잭션이 포함된 블록이 몇 번째 블록인지 나타낸다.

BLOCK TIMESTAMP

이 트랜잭션이 포함된 블록의 채굴 시간을 나타낸다.

TRANSACTION FEES

이 트랜잭션을 블록에 포함시키기 위해 채굴자에게 지불한 수수료이다. 수수료로 0.00121920 BTC를 지불했다.

비트코인 송금 시 sat/vB 값을 현재 시세 이상으로 설정해야 안정적으로 송금에 성공할 수 있다. 이 값을 작게 설정하면 상당히 오랜 시간을 기다려야 할 수도 있으니 주의하자. 이런 경우 수수료를 더 지불하는 방법으로 문제를 해결할 수도 있는데 자세한 내용은 다른 글에서 다룰 예정이다.

sat는 사토시(Satoshi)를 의미하며 1 비트코인은 100,000,000 사토시이다.

vB는 가중치로 계산된 트랜잭션 데이터 크기를 의미하는데, 자세한 내용은 아래에서 다룬다.

SIZE

(가중치로 계산하지 않은) 트랜잭션의 실제 데이터 크기를 의미한다.

VIRTUAL SIZE

가중치로 계산된 트랜잭션의 데이터 크기를 의미하며 WEIGHT UNITS을 4로 나눈 값이다. 수수료 계산에서 중요한 역할을 한다. 자세한 내용은 아래에서 다룬다.

WEIGHT UNITS

이 트랜잭션의 가중치를 의미하며 자세한 내용은 아래에서 다룬다.

VERSION

이 트랜잭션이 어떤 버전의 규칙을 따르는지 나타낸다. Version 2는 BIP-68에 도입됐다.

LOCK TIME

이 트랜잭션이 블록에 포함되는 시간을 제한할 수 있다.

  • 0: 시간 제한 없이 이 트랜잭션은 다음 블록에 포함되도 괜찮다
  • 1 ~ 5억 미만: 트랜잭션이 해당 블록 높이 이후의 블록에 포함되어야 한다
  • 5억 이상: UNIX timestamp를 의미하며 트랜잭션이 해당 시간 이후에 블록에 포함되어야 한다

SEGWIT FEE SAVINGS

SegWit 트랜잭션 포맷을 사용하면 Non-SegWit 포맷보다 수수료 비용을 아낄 수 있다. 이 트랜잭션은 Segwit 포맷을 사용했으며 Non-SegWit 포맷 대비 42%의 수수료를 절약했다.

만약 Non-SegWit 포맷을 사용했다면 실제 데이터 크기(192B)가 VIRTUAL SIZE가 되면서 더 많은 수수료를 지불하게 된다. SegWit 포맷을 사용하면서 절약하게 된 수수료는 아래와 같이 계산할 수 있다.

(192-110)/192 = 0.4270833333

PRIVACY ANALYSIS

blockstream.info에서 자체적으로 분석한 결과를 보여준다. Possibly self-transfer는 손바뀜이 일어나지 않고 보내는 주소와 받는 주소가 모두 같은 사람일 확률이 높다는 의미이다. 잔돈이 발생하지 않았는데(보내는 주소의 모든 비트코인을 보냈기 때문), 아마도 이런 경우에 Possibly self-transfer라고 판단하는 것 같다. Address reuse, Mixed script types 등 다양한 분석 결과를 보여준다. 나중에 시간이 되면 따로 다뤄봐도 좋을 것 같다.

SegWit 업그레이드 그리고 가중치

많은 트랜잭션이 몰리면서 수수료가 급등하는 일이 잦았고 이에 대한 해결책이 필요했다. 블록 사이즈 전쟁(BlockSize War)이라고 불릴 정도로 진영이 나뉘었고, 블록 크기 확장을 주장한 진영은 비트코인 캐시(BCH)라는 이름으로 하드포크를 하게 된다. 기존 비트코인 진영은 1MB 제한을 유지하면서 더 많은 트랜잭션을 담을 수 있는 SegWit 업그레이드(SegWit이 확장성 문제만 해결한 것은 아니다)를 하게 된다.

가중치 계산

SegWit 트랜잭션은 트랜잭션 데이터를 트랜잭션 영역과 Witness 영역으로 나눈다. 트랜잭션 영역은 4배, 서명 영역은 1배를 적용해서 가중치를 계산한다.

어떤 트랜잭션의 크기가 1kB이고 각 영역의 데이터 크기는 아래와 같다고 해보자.

트랜잭션 영역: 0.6kB
서명 영역: 0.4kB

Non-SegWit 트랜잭션은 서명 영역이 따로 없고 트랜잭션 영역만 1KB이므로 가중치는 1k x 4 = 4k WU가 된다.

SegWit 트랜잭션은 서명 영역이 따로 존재하므로 가중치는 0.6k x 4 + 0.4k = 2.8k WU가 된다. 따라서 Non-SegWit 트랜잭션 보다 작은 VIRTUAL SIZE(vB)를 갖게 되고 결과적으로 더 낮은 수수료를 지불하게 된다.

Non-SegWit 트랜잭션: 4k WU / 4 = 1k vB
SegWit 트랜잭션: : 2.8k WU / 4 = 0.7k vB

댓글 삭제 시 메일 주소가 필요합니다