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 |
---|