{
get
{
- uint256 nTarget = 0;
- nTarget.Compact = nBits;
-
- /* Old protocol */
- if (nTime < NetInfo.nChainChecksSwitchTime)
+ // Return 1 for the first 12 blocks
+ if (prev == null || prev.nHeight < 12)
{
- return IsProofOfStake ? (new uint256(1) << 256) / (nTarget + 1) : 1;
+ return 1;
}
- /* New protocol */
-
- // Calculate work amount for block
- var nPoWTrust = NetInfo.nPoWBase / (nTarget + 1);
-
- // Set nPowTrust to 1 if we are checking PoS block or PoW difficulty is too low
- nPoWTrust = (IsProofOfStake || !nPoWTrust) ? 1 : nPoWTrust;
-
- // Return nPoWTrust for the first 12 blocks
- if (prev == null || prev.nHeight < 12)
- return nPoWTrust;
+ uint256 nTarget = 0;
+ nTarget.Compact = nBits;
CBlockStoreItem currentIndex = prev;
}
else
{
+ // Calculate work amount for block
+ var nPoWTrust = NetInfo.nPoWBase / (nTarget + 1);
+
+ // Set nPowTrust to 1 if we are checking PoS block or PoW difficulty is too low
+ nPoWTrust = (IsProofOfStake || !nPoWTrust) ? 1 : nPoWTrust;
+
var nLastBlockTrust = prev.nChainTrust - prev.prev.nChainTrust;
// Return nPoWTrust + 2/3 of previous block score if two parent blocks are not PoS blocks
}
/// <summary>
- /// Stake modifier checksum.
+ /// Stake modifier checksum
/// </summary>
public uint nStakeModifierChecksum;
get { return TransactionFlags == TxFlags.TX_COINSTAKE; }
}
+ public CMerkleNode()
+ {
+ }
+
public CMerkleNode(CTransaction tx)
{
nTime = tx.nTime;
public class TxOutItem
{
/// <summary>
+ /// Outpoint identifier.
+ /// </summary>
+ [PrimaryKey, AutoIncrement]
+ public long nOutpointID { get; set; }
+
+ /// <summary>
/// Reference to transaction item.
/// </summary>
[ForeignKey(typeof(CMerkleNode), Name = "nMerkleNodeID")]
/// Getter for output value.
/// </summary>
[Ignore]
- public ulong nValue
+ public long nValue
{
get { return VarInt.DecodeVarInt(OutputValue); }
set { OutputValue = VarInt.EncodeVarInt(value); }
public class InputsJoin : TxOutItem
{
public byte[] TransactionHash { get; set; }
+
+ /// <summary>
+ /// To avoid awkwardness of sqlite wrapper.
+ /// </summary>
+ /// <returns></returns>
+ public TxOutItem getTxOutItem()
+ {
+ return new TxOutItem()
+ {
+ nOutpointID = nOutpointID,
+ nMerkleNodeID = nMerkleNodeID,
+ outputFlags = outputFlags,
+ OutputNumber = OutputNumber,
+ OutputValue = OutputValue,
+ scriptPubKey = scriptPubKey
+ };
+ }
}