Bitcoin

23.02.04 psbt input 타입

슈팅스타제제 2023. 2. 4. 23:59

psbt: partially signed bitcoin transaction 

 

트랜잭션을 블록에 올리기 전에 mem pool 에 rawtx 를 보내는데 

이때 rawtx 에 송신 지갑 서명이 포함되어야 한다. 

 

psbt 는 트랜잭션에 서명하고 빌드해주는 역할을 하는데 

비트코인 주소 타입에 따라서 input 값이 조금씩 달라진다. 

 

p2pkh ⇒ p2pkh: nonWitnessUTXO

먼저, legacy 인 p2pkh 는 전송 시 nonWitnessUtxo 속성에 서명 스크립트를 담는다. 

psbt.addInput({
	hash: tx_hash_big_endian, //UTXO 의 txId 값을 넣음. 메인 값인 big_endian 넣기!
    index: tx_output_n, //UTXO 의 인덱스 값 넣음. 
    nonWitnessUtxo: Buffer.from(script, "hex"),
})

 

p2wpkh ⇒ p2wpkh, p2wpkh ⇒ p2pkh : witnessUTXO

p2wpkh 는 전송 시 witnessUtxo 속성에 스크립트를 담아야 한다. p2wpkh 의 w가 witness !!

그리고 일단 p2wpkh 에서 p2pkh 로 전송 가능한 것 테스트함~!~!

psbt.addInput({
	hash: tx_hash_big_endian, //UTXO 의 txId 값을 넣음. 메인 값인 big_endian 넣기!
    index: tx_output_n, //UTXO 의 인덱스 값 넣음. 
    witnessUtxo: {
    	script: Buffer.from(script, "hex"), // UTXO 의 script
        value, //UTXO value 값
    },
})

 

 

만약 multiSig 로 스크립트를 여러 개 담아서 빌드할 경우 

p2sh, p2wsh 등 redeem script 뭐시기 속성을 추가하면 된다~!

참고로 p2sh 는 p2pkh 와 p2wpkh 둘다 호환 가능하다.

'Bitcoin' 카테고리의 다른 글

23.01.22 Bitcoin Address Type  (0) 2023.01.22