I'm on Core Client 27.1, just using the daemon for now. Thought about switching to the GUI, but first let me explain my setup.
I've got a cold wallet on a Raspberry Pi and a watch wallet on a regular PC. They communicate via QR codes. Pretty smooth, I can send like 2k of data with one code.
I’m sticking to BIP 84 addresses, keeping things standard. Just need to send Bitcoin simply.
I did some digging online and found this series of articles.
The section on creating a PSBT the easy way seems perfect for me. Gonna give it a try.
Saw HWI in the last article. Didn't know about it before. Seems useful, but feels like it complicates my current setup. Can I just stick to walletprocesspsbt on my Raspberry?
Definitely go with PSBTs, they come packed with the info needed for signing. Raw transaction steps need you to supply that data separately, which is a hassle.
That setup should work. Just a heads up, the guide might be outdated since it was written for versions before 26.0.
Since you're on 27.1, finalizepsbt won't be needed. walletprocesspsbt will give you the finalized hex to broadcast with your watch wallet.
I switched to the qt-client after realizing it’s got a full PSBT workflow. Did two native SegWit transactions as a test. Signed them on my HW wallet, no issues, network accepted them.
Surprisingly, the first PSBT was 3K big, the second only 300 bytes. Crazy difference! Didn’t expect that, thought they’d be around 300 bytes each.
But they both are P2WPKH transactions, right? No big structure differences should cause that. Maybe the number of UTXOs in the first one inflated its size?
Here's the analyzepsbt for the first transaction (3071 bytes):
And for the second one (272 bytes). Looks like both had one input? But the first one is way bigger.
Each adds around 50 bytes when signed, I assume that's normal.
Used decodepsbt to check the files in JSON. Major differences!
From my user view, I did the same for both transactions. First, moved all from address 1 to 2. Then from 2 to 3.
In the second transaction, I see an input and output under non_witness_utxo, which is mine. Seems normal? The first one has a bunch of other inputs and outputs.
Nah, it’s a security measure.
Signing needs the output script of what you’re spending. That info isn’t part of the input, so it’s extra data in PSBT. Also, you wanna know the amount to verify things. With non-segwit, someone could trick you into signing a transaction with incorrect amounts.
You and nc50lc really helped me out here, thanks! I need to study more to grasp everything fully.
What I get is that signing needs more data than it seems. The PSBT size depends on how inputs were added originally. Maybe I should look into Taproot (Bech32m) to avoid this issue.
Average transaction size is just 300 bytes, so I should be good.