본문 바로가기
BlockChain/Wallet 프로그래밍 & 보안

[wallet 프로그래밍 & 보안] 2. BITCOIN Transaction

by rooney-l3 2019. 11. 7.

1. 안 쓴 트랜잭션 보기 

$ bitcoin-cli -regtest listunspent

위의 코드를 입력하면 다음과 같은 결과를 얻을 수 있습니다. 돈이 50.000들어왔으며, 아직 사용하지 않은것으로 나타납니다.

 

2.트랜잭션 내용 보기 

 상기 결과값의 "txid(Transaction id)"를 사용하여 gettransaction을 호출할 수 있습니다. [txid]에 주소를 쓸때 대괄호는 쓰지 않습니다. 

$ bitcoin-cli -regtest gettransaction [txid]

decoderawtransaction과 위의 결과값중 "hex"을 이용하면 진짜 블록에 올라가는 TX 내용을 호출할 수 있습니다.

[txid]에 주소를 쓸때 대괄호는 쓰지 않습니다. 

$ bitcoin-cli -regtest decoderawtransaction [hex]

3. 이체 후 트렌젝션 내용 다시보기

$ ADDR1=$(bitcoin-cli -regtest getnewaddress)

$ bitcoin-cli -regtest sendtoaddress $ADDR1 7

$ bitcoin-cli -regtest generatetoaddress 1 $CB

$ bitcoin-cli -regtest regtest listunspent

$ bitcoin-cli -regtest gettransacation [TXID]

$ bitcoin-cli -regtest decoderawtransaction [hex]

coinbase 트랜잭션 [50]을 vin으로 7과 43을 나눠 갖는 트랜잭션임을 확인할 수 있습니다.

 

4. 비트코인 트랜잭션

 - 비트코인은 이체 트랜잭션 장부입니다. 결코 누가 얼마를 갖고 있다는 잔고 장부가 아닙니다. 나에게 보내진 트랜잭션들의 합이 나의 잔고입니다. 

 

5. 비트코인 트랜잭션 만들기

CB에 generate 시키고 ADD1을 만들어서 7을 이체시킨 후 ADD2를 만들어 3을 이체 시켰습니다. 그 이후의 트렌잭션에 대해 살펴보겠습니다.

 

[step1] unspent TX조회

$ bitcoin-cli -regtest listunspent

위의 코드를 입력 후 나오는 트랜잭션은 아직 사용되지 않은 트랜잭션들입니다. 3을 받은 UTXO을 UTXO변수에 저장하겠습니다.

 

[step2]받을 주소 하나 만들기

$ ADDR3=$(bitcoin-cli -regtest getnewaddress)

[step3]트랜잭션 만들기

bitcoin-cli -regtest createrawtransaction

''' [ { "txid": "'UTXO'", "vout": 0 }}] '''

''' { "'ADDR3'" : 2 .98 }'''

다음코드를 입력하면 트랜잭션이 만들어집니다. 위 코드의 결과를 RAWTX변수에 저장하겠습니다.

[step4]서명하기

bitcoin-cli -regtest signrawtransactionwithwallet $RAWTX

위의 코드를 입력하면 서명된 트랜잭션이 만들어집니다. 위 코드입력 결과의 "hex"부분을 SIGTX변수에 저장하겠습니다.

[step5]전송하기

서명된 트랜잭션을 네트워크에 전송하여 검증,합의합니다. 

bitcoin-cli -regtest sendrawtransaction $SIGTX

댓글