2-of-4 multisig + segwit

The following two transactions use a 2-of-4 wallet. The first transaction funds the cold wallet and the second transaction moves funds out.

What is not shown here are the QR codes which carried the transaction metadata and signatures. We also skip over how the cold wallet is initialized for now.

Sending funds to a cold wallet

The following transaction was broadcasted on Testnet. The cold wallet address is a pay-to-script-hash type address (2NG8AE4w9bcaAAVzFF9dyPrqdtFt4rpCgqp)

020000000151348dd145dda8e34b108ab000eb15c4f54d074c3117d7d2a43538f7a6ebf899000000006a47304402200
a7560d27bb4e78682626878e9541cf1e77061d25be999384be98069d259af7102207baef2bfe7befcd06af9efa0acf0
1e0a3d4d1c91e779b67b02303ccb58eccd120121025fa31a70ea8d8270a0e42cde93ae58e6f3160e0ab9470774b98b3
496cbc3e432feffffff0291ae1018000000001976a914300163c3ab4c2207be60f67402791fbc83f37c3f88ac80a4bf
070000000017a914faf4d7354aae5846569530283b31875e8439a2f1873c1d1500

Which decodes to:

02000000 // version
01 // n_inputs
 51348dd145dda8e34b108ab000eb15c4f54d074c3117d7d2a43538f7a6ebf899 // prev_hash
 00000000 // index
 6a 47304402200a7560d27bb4e78682626878e9541cf1e77061d25be999384be98069d259af7102207baef2bfe7befcd06af9efa0acf01e0a3d4d1c91e779b67b02303ccb58eccd120121025fa31a70ea8d8270a0e42cde93ae58e6f3160e0ab9470774b98b3496cbc3e432 // script
 feffffff // sequence

02 // n_outputs
 91ae101800000000 // amount
 19 76a914300163c3ab4c2207be60f67402791fbc83f37c3f88ac // script

 80a4bf0700000000 // amount
 17 a914faf4d7354aae5846569530283b31875e8439a2f187 // script

3c1d1500 // timelock

Retrieving funds from the cold wallet

The signing ceremony produced two sets of signatures:

1. 304402200902963690c2161c47a2a050552d8d0653a25cd5760288395f2cb36be2ef77ed02200ddc11839052972d
88da9c6044dc486b692d2fad2f2c11175f414d1733f9014901
2. 3044022009d472294cf982690bb791e6a5fc0e209b2d12d524cc8cfc65c86a564aa64df3022031c6888c8a88e7db
c0885ee43850452dec77b0a206321dafcd8484ed2680471201

The signatures were then combined and broadcasted:

010000000001017be045ebc7a6f9245146654b4af72dc56313dde701f82332fdfa0c4662c4ef270100000023220
0205211be1c60bb65d02a0fbc2b0d9ce77c83f680a1414248ca7a36232e2292ea4afeffffff02c0209002000000
017a91416872e5bd0e766876696531e68a87605fd082c4987804120050000000017a9142e820d410e36fb6ab1b2
72eb62a37282b95e2f2087040047304402200902963690c2161c47a2a050552d8d0653a25cd5760288395f2cb36
be2ef77ed02200ddc11839052972d88da9c6044dc486b692d2fad2f2c11175f414d1733f9014901473044022009
d472294cf982690bb791e6a5fc0e209b2d12d524cc8cfc65c86a564aa64df3022031c6888c8a88e7dbc0885ee43
850452dec77b0a206321dafcd8484ed26804712018b5221022dc4f3706655e8c11685bfe1978e930bcbba1d8326
9f385c5242b00905a3253c2102359b50d66f4439fc135e558e4f09631aa8d1688553449cf794bf12f88d0877962
102fd5283f39419f559dbc16a5ea6a721f22de21d224bc665b64c59102dfcc5253021036dd870c3272a0d1f1f33
ee382ad9f3d7b370021e16b78528220907db41aa7d2454ae00000000

Which decodes to:

01000000 // version
00 // segwit marker
01 // segwit flag
01 // n_inputs
 7be045ebc7a6f9245146654b4af72dc56313dde701f82332fdfa0c4662c4ef27 // prev_hash
 01000000 // index
 23 2200205211be1c60bb65d02a0fbc2b0d9ce77c83f680a1414248ca7a36232e2292ea4a // script
 feffffff // sequence

02 // n_outputs
 c020900200000000 // amount
 17 a91416872e5bd0e766876696531e68a87605fd082c4987 // script

 8041200500000000 // amount
 17 a9142e820d410e36fb6ab1b272eb62a37282b95e2f2087 // script

04 // witness
 00  // witness
 47 304402200902963690c2161c47a2a050552d8d0653a25cd5760288395f2cb36be2ef77ed02200ddc11839052972d88da9c6044dc486b692d2fad2f2c11175f414d1733f9014901 // witness
 47 3044022009d472294cf982690bb791e6a5fc0e209b2d12d524cc8cfc65c86a564aa64df3022031c6888c8a88e7dbc0885ee43850452dec77b0a206321dafcd8484ed2680471201 // witness
 8b 5221022dc4f3706655e8c11685bfe1978e930bcbba1d83269f385c5242b00905a3253c2102359b50d66f4439fc135e558e4f09631aa8d1688553449cf794bf12f88d0877962102fd5283f39419f559dbc16a5ea6a721f22de21d224bc665b64c59102dfcc5253021036dd870c3272a0d1f1f33ee382ad9f3d7b370021e16b78528220907db41aa7d2454ae // witness
00000000 // timelock