message: Update transaction undo for coin stake.
diff: @@ -21,11 +21,12 @@ class CTxInUndo
  public:
  CTxOut txout; // the txout data before being spent
  bool fCoinBase; // if the outpoint was the last unspent: whether it belonged to a coinbase
  + bool fCoinStake; // if the outpoint was the last unspent: whether it belonged to a coinstake
  unsigned int nHeight; // if the outpoint was the last unspent: its height
  int nVersion; // if the outpoint was the last unspent: its version
  - CTxInUndo() : txout(), fCoinBase(false), nHeight(0), nVersion(0) {}
  - CTxInUndo(const CTxOut &txoutIn, bool fCoinBaseIn = false, unsigned int nHeightIn = 0, int nVersionIn = 0) : txout(txoutIn), fCoinBase(fCoinBaseIn), nHeight(nHeightIn), nVersion(nVersionIn) { }
  + CTxInUndo() : txout(), fCoinBase(false), fCoinStake(false), nHeight(0), nVersion(0) {}
  + CTxInUndo(const CTxOut &txoutIn, bool fCoinBaseIn = false, bool fCoinStakeIn = false, unsigned int nHeightIn = 0, int nVersionIn = 0) : txout(txoutIn), fCoinBase(fCoinBaseIn), fCoinStake(fCoinStakeIn), nHeight(nHeightIn), nVersion(nVersionIn) { }
  template<typename Stream>
  void Serialize(Stream &s) const {
  @@ -39,8 +40,9 @@ public:
  void Unserialize(Stream &s) {
  unsigned int nCode = 0;
  ::Unserialize(s, VARINT(nCode));
  - nHeight = nCode / 2;
  + nHeight = nCode / 4;
  fCoinBase = nCode & 1;
  + fCoinStake = nCode & 2;
  if (nHeight > 0)
  ::Unserialize(s, VARINT(this->nVersion));
  ::Unserialize(s, REF(CTxOutCompressor(REF(txout))));
  