|
| void | FromTx (const CTransaction &tx, int nHeightIn) |
| |
| | CCoins (const CTransaction &tx, int nHeightIn) |
| | construct a CCoins from a CTransaction, at a given height More...
|
| |
| void | Clear () |
| |
| | CCoins () |
| | empty constructor More...
|
| |
| void | Cleanup () |
| | remove spent outputs at the end of vout More...
|
| |
| void | ClearUnspendable () |
| |
| void | swap (CCoins &to) |
| |
| void | CalcMaskSize (unsigned int &nBytes, unsigned int &nNonzeroBytes) const |
| | calculate number of bytes for the bitmask, and its number of non-zero bytes each bit in the bitmask represents the availability of one output, but the availabilities of the first two outputs are encoded separately More...
|
| |
| bool | IsCoinBase () const |
| |
| bool | IsCoinStake () const |
| |
| unsigned int | GetSerializeSize (int nType, int nVersion) const |
| |
| template<typename Stream > |
| void | Serialize (Stream &s, int nType, int nVersion) const |
| |
| template<typename Stream > |
| void | Unserialize (Stream &s, int nType, int nVersion) |
| |
| bool | Spend (const COutPoint &out, CTxInUndo &undo) |
| | mark an outpoint spent, and construct undo information More...
|
| |
| bool | Spend (int nPos) |
| | mark a vout spent More...
|
| |
| bool | IsAvailable (unsigned int nPos) const |
| | check whether a particular output is still available More...
|
| |
| bool | IsPruned () const |
| | check whether the entire CCoins is spent note that only !IsPruned() CCoins can be serialized More...
|
| |
| size_t | DynamicMemoryUsage () const |
| |
Note - for PRCY we added fCoinStake to the 2nd bit. Keep in mind when reading the following and adjust as needed.
Pruned version of CTransaction: only retains metadata and unspent transaction outputs
Serialized format:
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
Definition at line 77 of file coins.h.