My ultimate goal is to parse funding transactions (as well as channel closes in a later step) from the blockchain. In order to do so I wanted to start with a funding transaction and disect it. Unfortunately I am kind of stuck and hope you can help out.
via #recksplorer I clicked on an edge and found this transaction to be the funding transaction of a payment channel. I found this transaction in my local copy of the blockchain using bitcoin-blockchain-parser (in python) lib
using this code
for i,h in enumerate(tx.hex):
print('{:02x}'.format(h),end=" ")
if i%8==7:
print(" ",end="")
if i%16==15:
print()
print()
I get the following hex representation of my transaction (the two asterix ** where included to emphasize the output script of interest):
02 00 00 00 00 01 01 e3 3d f6 39 1a 02 5c 79 b3
1a 2a ab 94 9f b5 6d f8 f9 2d 9f 3a bb ab 7d d3
92 47 7f 31 9f b6 69 01 00 00 00 00 ff ff ff ff
02 21 4e 00 00 00 00 00 00 22 **00 20 98 2b 53 22
31 08 07 d3 68 d1 dc 26 11 43 09 5d c7 d0 2f ba
6d 67 08 bb 76 21 51 9f 31 29 08 b2** e1 99 0d 00
00 00 00 00 16 00 14 8c 35 c6 98 4d f9 d6 a2 9e
4e 7d 76 21 19 3c fe 53 82 ce 60 02 48 30 45 02
21 00 ba 9e 6e 56 a6 4f a2 53 4a 02 e9 30 20 8e
80 38 f6 f0 7c a8 d2 0e b3 e4 03 59 99 20 8f 9d
a1 15 02 20 3a 12 73 72 c4 bc ee 6f 76 9e 07 fd
05 0e f0 62 9b 4d e8 e6 43 84 26 46 53 56 03 46
07 f3 9a eb 01 21 03 0c fa b1 4c d0 4a 01 5a 58
40 2a 5e a6 84 e4 d9 b3 4b 33 23 73 04 0c 57 5e
83 b1 0a d3 90 79 66 00 00 00 00
I also found the two output scripts in particular the first one (after byte 58!) which sends 20001 satoshi to a payment channel:
output = tx.outputs[0]
for x in output.script.hex:
print('{:02x}'.format(h),end=" ")
00 20 98 2b 53 22 31 08 07 d3 68 d1 dc 26 11 43 09 5d c7 d0 2f ba 6d 67 08 bb 76 21 51 9f 31 29 08 b2
I have not been able to understand the format of the funding transaction itself. according to BOLT3 it should look like this:
2 < pubkey1 > < pubkey2 > 2 OP_CHECKMULTISIG
I asusme that 2 means OP_2. However with the help of bitcoin wiki I cannot find the hex values of OP_2 and OP_CHECKMULTISIG.
I guess (but can't verify this at the moment) that I am running into problems similar to this question here on this site. Or I am messing up with the endian notations? As mentioned my future goal would be to automatically extract all funding transactions therefor I need to be able to pursue my endeavor and would appreciate your help a lot! Thanks!