PRCYCoin  2.0.0.7rc1
P2P Digital Currency
stakeinput.h
Go to the documentation of this file.
1 // Copyright (c) 2017 The PIVX developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef PRCY_STAKEINPUT_H
6 #define PRCY_STAKEINPUT_H
7 
8 #include "chain.h"
9 #include "streams.h"
10 #include "uint256.h"
11 
12 class CKeyStore;
13 class CWallet;
14 class CWalletTx;
15 
17 {
18 protected:
20 
21 public:
22  virtual ~CStakeInput(){};
23  virtual CBlockIndex* GetIndexFrom() = 0;
24  virtual bool CreateTxIn(CWallet* pwallet, CTxIn& txIn, uint256 hashTxOut = 0) = 0;
25  virtual bool GetTxFrom(CTransaction& tx) = 0;
26  virtual CAmount GetValue() = 0;
27  virtual bool CreateTxOuts(CWallet* pwallet, std::vector<CTxOut>& vout, CAmount nTotal) = 0;
28  virtual bool GetModifier(uint64_t& nStakeModifier) = 0;
29  virtual CDataStream GetUniqueness() = 0;
30 };
31 
32 class CPrcyStake : public CStakeInput
33 {
34 private:
36  unsigned int nPosition;
37 public:
39  {
40  this->pindexFrom = nullptr;
41  }
42 
43  bool SetInput(CTransaction txPrev, unsigned int n);
44 
45  CBlockIndex* GetIndexFrom() override;
46  bool GetTxFrom(CTransaction& tx) override;
47  CAmount GetValue() override;
48  bool GetModifier(uint64_t& nStakeModifier) override;
49  CDataStream GetUniqueness() override;
50  bool CreateTxIn(CWallet* pwallet, CTxIn& txIn, uint256 hashTxOut = 0) override;
51  bool CreateTxOuts(CWallet* pwallet, std::vector<CTxOut>& vout, CAmount nTotal) override;
52 };
53 
54 
55 #endif //PRCY_STAKEINPUT_H
CTxIn
An input of a transaction.
Definition: transaction.h:83
CKeyStore
A virtual base class for key stores.
Definition: keystore.h:21
CPrcyStake::CreateTxIn
bool CreateTxIn(CWallet *pwallet, CTxIn &txIn, uint256 hashTxOut=0) override
Definition: stakeinput.cpp:24
CPrcyStake::GetUniqueness
CDataStream GetUniqueness() override
Definition: stakeinput.cpp:135
streams.h
CStakeInput::GetIndexFrom
virtual CBlockIndex * GetIndexFrom()=0
uint256.h
CPrcyStake::GetModifier
bool GetModifier(uint64_t &nStakeModifier) override
Definition: stakeinput.cpp:121
CStakeInput::pindexFrom
CBlockIndex * pindexFrom
Definition: stakeinput.h:19
CStakeInput::CreateTxIn
virtual bool CreateTxIn(CWallet *pwallet, CTxIn &txIn, uint256 hashTxOut=0)=0
CStakeInput::GetModifier
virtual bool GetModifier(uint64_t &nStakeModifier)=0
CPrcyStake
Definition: stakeinput.h:32
CTransaction
The basic transaction that is broadcasted on the network and contained in blocks.
Definition: transaction.h:269
CStakeInput::GetUniqueness
virtual CDataStream GetUniqueness()=0
CPrcyStake::GetTxFrom
bool GetTxFrom(CTransaction &tx) override
Definition: stakeinput.cpp:18
CPrcyStake::CPrcyStake
CPrcyStake()
Definition: stakeinput.h:38
CStakeInput
Definition: stakeinput.h:16
CPrcyStake::GetIndexFrom
CBlockIndex * GetIndexFrom() override
Definition: stakeinput.cpp:144
CPrcyStake::GetValue
CAmount GetValue() override
Definition: stakeinput.cpp:44
CAmount
int64_t CAmount
Amount in PRCY (Can be negative)
Definition: amount.h:17
uint256
256-bit unsigned big integer.
Definition: uint256.h:38
chain.h
CPrcyStake::CreateTxOuts
bool CreateTxOuts(CWallet *pwallet, std::vector< CTxOut > &vout, CAmount nTotal) override
Definition: stakeinput.cpp:58
CPrcyStake::nPosition
unsigned int nPosition
Definition: stakeinput.h:36
CStakeInput::GetValue
virtual CAmount GetValue()=0
CPrcyStake::txFrom
CTransaction txFrom
Definition: stakeinput.h:35
CWallet
A CWallet is an extension of a keystore, which also maintains a set of transactions and balances,...
Definition: wallet.h:243
CWalletTx
A transaction with a bunch of additional info that only the owner cares about.
Definition: wallet.h:792
CStakeInput::~CStakeInput
virtual ~CStakeInput()
Definition: stakeinput.h:22
CDataStream
Double ended buffer combining vector and stream-like interfaces.
Definition: streams.h:34
CPrcyStake::SetInput
bool SetInput(CTransaction txPrev, unsigned int n)
PRCY Stake.
Definition: stakeinput.cpp:11
CStakeInput::CreateTxOuts
virtual bool CreateTxOuts(CWallet *pwallet, std::vector< CTxOut > &vout, CAmount nTotal)=0
CStakeInput::GetTxFrom
virtual bool GetTxFrom(CTransaction &tx)=0
CBlockIndex
The block chain is a tree shaped structure starting with the genesis block at the root,...
Definition: chain.h:162