Created
October 24, 2017 15:56
-
-
Save itoonx/3754906d179355affdca4630d045c71c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** pruned version of CTransaction: only retains metadata and unspent transaction outputs | |
* | |
* Serialized format: | |
* - VARINT(nVersion) | |
* - VARINT(nCode) | |
* - unspentness bitvector, for vout[2] and further; least significant byte first | |
* - the non-spent CTxOuts (via CTxOutCompressor) | |
* - VARINT(nHeight) | |
* | |
* The nCode value consists of: | |
* - bit 1: IsCoinBase() | |
* - bit 2: vout[0] is not spent | |
* - bit 4: vout[1] is not spent | |
* - The higher bits encode N, the number of non-zero bytes in the following bitvector. | |
* - In case both bit 2 and bit 4 are unset, they encode N-1, as there must be at | |
* least one non-spent output). | |
* | |
* Example: 0104835800816115944e077fe7c803cfa57f29b36bf87c1d358bb85e | |
* <><><--------------------------------------------><----> | |
* | \ | / | |
* version code vout[1] height | |
* | |
* - version = 1 | |
* - code = 4 (vout[1] is not spent, and 0 non-zero bytes of bitvector follow) | |
* - unspentness bitvector: as 0 non-zero bytes follow, it has length 0 | |
* - vout[1]: 835800816115944e077fe7c803cfa57f29b36bf87c1d35 | |
* * 8358: compact amount representation for 60000000000 (600 BTC) | |
* * 00: special txout type pay-to-pubkey-hash | |
* * 816115944e077fe7c803cfa57f29b36bf87c1d35: address uint160 | |
* - height = 203998 | |
* | |
* | |
* Example: 0109044086ef97d5790061b01caab50f1b8e9c50a5057eb43c2d9563a4eebbd123008c988f1a4a4de2161e0f50aac7f17e7f9555caa486af3b | |
* <><><--><--------------------------------------------------><----------------------------------------------><----> | |
* / \ \ | | / | |
* version code unspentness vout[4] vout[16] height | |
* | |
* - version = 1 | |
* - code = 9 (coinbase, neither vout[0] or vout[1] are unspent, | |
* 2 (1, +1 because both bit 2 and bit 4 are unset) non-zero bitvector bytes follow) | |
* - unspentness bitvector: bits 2 (0x04) and 14 (0x4000) are set, so vout[2+2] and vout[14+2] are unspent | |
* - vout[4]: 86ef97d5790061b01caab50f1b8e9c50a5057eb43c2d9563a4ee | |
* * 86ef97d579: compact amount representation for 234925952 (2.35 BTC) | |
* * 00: special txout type pay-to-pubkey-hash | |
* * 61b01caab50f1b8e9c50a5057eb43c2d9563a4ee: address uint160 | |
* - vout[16]: bbd123008c988f1a4a4de2161e0f50aac7f17e7f9555caa4 | |
* * bbd123: compact amount representation for 110397 (0.001 BTC) | |
* * 00: special txout type pay-to-pubkey-hash | |
* * 8c988f1a4a4de2161e0f50aac7f17e7f9555caa4: address uint160 | |
* - height = 120891 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
SegWit input scriptSigs will have one of these patterns: