Skip to content

Commit ea3c956

Browse files
committed
fluid: general purpose refactor, do not access internal values
1 parent 5f11342 commit ea3c956

8 files changed

Lines changed: 81 additions & 135 deletions

File tree

src/fluid/db.cpp

Lines changed: 32 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,28 @@
1111

1212
CAmount GetFluidDynodeReward(const int nHeight)
1313
{
14-
assert(pFluidDynodeDB);
15-
16-
if (FLUID_ACTIVATE_HEIGHT > nHeight)
17-
return GetStandardDynodePayment(nHeight);
18-
19-
if (pFluidDynodeDB->IsEmpty())
20-
return GetStandardDynodePayment(nHeight);
21-
2214
CFluidDynode lastDynodeRecord;
23-
if (!pFluidDynodeDB->GetLastFluidDynodeRecord(lastDynodeRecord, nHeight)) {
24-
return GetStandardDynodePayment(nHeight);
25-
}
26-
if (lastDynodeRecord.DynodeReward > 0) {
27-
return lastDynodeRecord.DynodeReward;
28-
} else {
29-
return GetStandardDynodePayment(nHeight);
15+
16+
assert(pFluidDynodeDB);
17+
if (pFluidDynodeDB->GetLastFluidDynodeRecord(lastDynodeRecord, nHeight) && !pFluidDynodeDB->IsEmpty()) {
18+
return (lastDynodeRecord.GetReward() > 0 && FLUID_ACTIVATE_HEIGHT > nHeight) ?
19+
lastDynodeRecord.GetReward() : GetStandardDynodePayment(nHeight);
3020
}
21+
22+
return GetStandardDynodePayment(nHeight);
3123
}
3224

3325
CAmount GetFluidMiningReward(const int nHeight)
3426
{
35-
assert(pFluidMiningDB);
36-
37-
if (FLUID_ACTIVATE_HEIGHT > nHeight)
38-
return GetStandardPoWBlockPayment(nHeight);
39-
40-
if (pFluidMiningDB->IsEmpty())
41-
return GetStandardPoWBlockPayment(nHeight);
42-
4327
CFluidMining lastMiningRecord;
44-
if (!pFluidMiningDB->GetLastFluidMiningRecord(lastMiningRecord, nHeight)) {
45-
return GetStandardPoWBlockPayment(nHeight);
46-
}
47-
if (lastMiningRecord.MiningReward > 0) {
48-
return lastMiningRecord.MiningReward;
49-
} else {
50-
return GetStandardPoWBlockPayment(nHeight);
28+
29+
assert(pFluidMiningDB);
30+
if (pFluidMiningDB->GetLastFluidMiningRecord(lastMiningRecord, nHeight) && !pFluidMiningDB->IsEmpty()) {
31+
return (lastMiningRecord.GetReward() > 0 && FLUID_ACTIVATE_HEIGHT > nHeight) ?
32+
lastMiningRecord.GetReward() : GetStandardPoWBlockPayment(nHeight);
5133
}
34+
35+
return GetStandardDynodePayment(nHeight);
5236
}
5337

5438
bool GetMintingInstructions(const int nHeight, CFluidMint& fluidMint)
@@ -63,8 +47,8 @@ bool GetMintingInstructions(const int nHeight, CFluidMint& fluidMint)
6347
return false;
6448
}
6549

66-
if ((int)getFluidMint.nHeight == (nHeight - 1)) {
67-
fluidMint = getFluidMint;
50+
if (getFluidMint.GetHeight() == (nHeight - 1)) {
51+
getFluidMint = fluidMint;
6852
return true;
6953
}
7054
return false;
@@ -73,79 +57,57 @@ bool GetMintingInstructions(const int nHeight, CFluidMint& fluidMint)
7357
/** Checks if any given address is a current sovereign wallet address (invoked by RPC) */
7458
bool IsSovereignAddress(const CDynamicAddress& inputAddress)
7559
{
76-
assert(pFluidSovereignDB);
60+
CFluidSovereign lastSovereign;
7761

7862
if (!inputAddress.IsValid()) {
7963
return false;
8064
}
8165

82-
CFluidSovereign lastSovereign;
83-
if (!pFluidSovereignDB->GetLastFluidSovereignRecord(lastSovereign)) {
84-
return false;
85-
}
86-
87-
for (const std::vector<unsigned char>& vchAddress : lastSovereign.SovereignAddresses) {
88-
CDynamicAddress attemptKey(StringFromCharVector(vchAddress));
89-
if (attemptKey.IsValid() && inputAddress == attemptKey) {
90-
return true;
66+
assert(pFluidSovereignDB);
67+
if (pFluidSovereignDB->GetLastFluidSovereignRecord(lastSovereign)) {
68+
for (const std::vector<unsigned char>& vchAddress : lastSovereign.obj_sigs) {
69+
CDynamicAddress attemptKey(StringFromCharVector(vchAddress));
70+
return attemptKey.IsValid() && inputAddress == attemptKey;
9171
}
9272
}
73+
9374
return false;
9475
}
9576

9677
bool GetAllFluidDynodeRecords(std::vector<CFluidDynode>& dynodeEntries)
9778
{
9879
assert(pFluidDynodeDB);
99-
100-
if (pFluidDynodeDB->GetAllFluidDynodeRecords(dynodeEntries)) {
101-
return true;
102-
}
103-
return false;
80+
return pFluidDynodeDB->GetAllFluidDynodeRecords(dynodeEntries);
10481
}
10582

10683
bool GetAllFluidMiningRecords(std::vector<CFluidMining>& miningEntries)
10784
{
10885
assert(pFluidMiningDB);
109-
110-
if (!pFluidMiningDB->GetAllFluidMiningRecords(miningEntries)) {
111-
return true;
112-
}
113-
return false;
86+
return pFluidMiningDB->GetAllFluidMiningRecords(miningEntries);
11487
}
11588

11689
bool GetAllFluidMintRecords(std::vector<CFluidMint>& mintEntries)
11790
{
11891
assert(pFluidMintDB);
119-
120-
if (pFluidMintDB->GetAllFluidMintRecords(mintEntries)) {
121-
return true;
122-
}
123-
return false;
92+
return pFluidMintDB->GetAllFluidMintRecords(mintEntries);
12493
}
12594

12695
bool GetAllFluidSovereignRecords(std::vector<CFluidSovereign>& sovereignEntries)
12796
{
12897
assert(pFluidSovereignDB);
129-
130-
if (pFluidSovereignDB->IsEmpty()) {
131-
return false;
132-
}
133-
if (!pFluidSovereignDB->GetAllFluidSovereignRecords(sovereignEntries)) {
134-
return false;
135-
}
136-
return true;
98+
return pFluidSovereignDB->GetAllFluidSovereignRecords(sovereignEntries) && !pFluidSovereignDB->IsEmpty();
13799
}
138100

139101
bool GetLastFluidSovereignAddressStrings(std::vector<std::string>& sovereignAddresses)
140102
{
141103
assert(pFluidSovereignDB);
142-
143104
CFluidSovereign lastSovereign;
144-
if (!pFluidSovereignDB->GetLastFluidSovereignRecord(lastSovereign)) {
145-
return false;
105+
if (pFluidSovereignDB->GetLastFluidSovereignRecord(lastSovereign))
106+
{
107+
sovereignAddresses = lastSovereign.SovereignAddressesStrings();
108+
return true;
146109
}
147-
sovereignAddresses = lastSovereign.SovereignAddressesStrings();
148-
return true;
110+
return false;
149111
}
150112

151113
/** Checks whether 3 of 5 sovereign addresses signed the token in the script to meet the quorum requirements */

src/fluid/dynode.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ bool CFluidDynode::UnserializeFromTx(const CTransaction& tx)
3535
{
3636
int nOut;
3737
if (!GetFluidDynodeData(tx, *this, nOut)) {
38-
SetNull();
3938
return false;
4039
}
4140
return true;
@@ -44,7 +43,6 @@ bool CFluidDynode::UnserializeFromTx(const CTransaction& tx)
4443
bool CFluidDynode::UnserializeFromScript(const CScript& fluidScript)
4544
{
4645
if (!GetFluidDynodeData(fluidScript, *this)) {
47-
SetNull();
4846
return false;
4947
}
5048
return true;
@@ -66,7 +64,7 @@ bool CFluidDynodeDB::AddFluidDynodeEntry(const CFluidDynode& entry, const int op
6664
bool writeState = false;
6765
{
6866
LOCK(cs_fluid_dynode);
69-
writeState = Write(make_pair(std::string("script"), entry.FluidScript), entry) && Write(make_pair(std::string("txid"), entry.txHash), entry.FluidScript);
67+
writeState = Write(make_pair(std::string("script"), entry.GetTransactionScript()), entry) && Write(make_pair(std::string("txid"), entry.GetTransactionHash()), entry.GetTransactionScript());
7068
}
7169

7270
return writeState;
@@ -88,7 +86,7 @@ bool CFluidDynodeDB::GetLastFluidDynodeRecord(CFluidDynode& returnEntry, const i
8886
if (entry.IsNull()) {
8987
return false;
9088
}
91-
if (entry.nHeight > returnEntry.nHeight && (int)(entry.nHeight + 1) < nHeight) {
89+
if (entry.GetHeight() > returnEntry.GetHeight() && (int)(entry.GetHeight() + 1) < nHeight) {
9290
returnEntry = entry;
9391
}
9492
}

src/fluid/mining.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ bool CFluidMining::UnserializeFromTx(const CTransaction& tx)
3535
{
3636
int nOut;
3737
if (!GetFluidMiningData(tx, *this, nOut)) {
38-
SetNull();
3938
return false;
4039
}
4140
return true;
@@ -44,7 +43,6 @@ bool CFluidMining::UnserializeFromTx(const CTransaction& tx)
4443
bool CFluidMining::UnserializeFromScript(const CScript& fluidScript)
4544
{
4645
if (!GetFluidMiningData(fluidScript, *this)) {
47-
SetNull();
4846
return false;
4947
}
5048
return true;
@@ -66,7 +64,7 @@ bool CFluidMiningDB::AddFluidMiningEntry(const CFluidMining& entry, const int op
6664
bool writeState = false;
6765
{
6866
LOCK(cs_fluid_mining);
69-
writeState = Write(make_pair(std::string("script"), entry.FluidScript), entry) && Write(make_pair(std::string("txid"), entry.txHash), entry.FluidScript);
67+
writeState = Write(make_pair(std::string("script"), entry.GetTransactionScript()), entry) && Write(make_pair(std::string("txid"), entry.GetTransactionHash()), entry.GetTransactionScript());
7068
}
7169

7270
return writeState;
@@ -88,7 +86,7 @@ bool CFluidMiningDB::GetLastFluidMiningRecord(CFluidMining& returnEntry, const i
8886
if (entry.IsNull()) {
8987
return false;
9088
}
91-
if (entry.nHeight > returnEntry.nHeight && (int)(entry.nHeight + 1) < nHeight) {
89+
if (entry.GetHeight() > returnEntry.GetHeight() && (int)(entry.GetHeight() + 1) < nHeight) {
9290
returnEntry = entry;
9391
}
9492
}

src/fluid/mint.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ bool CFluidMint::UnserializeFromTx(const CTransaction& tx)
3636
{
3737
int nOut;
3838
if (!GetFluidMintData(tx, *this, nOut)) {
39-
SetNull();
4039
return false;
4140
}
4241
return true;
@@ -45,7 +44,6 @@ bool CFluidMint::UnserializeFromTx(const CTransaction& tx)
4544
bool CFluidMint::UnserializeFromScript(const CScript& fluidScript)
4645
{
4746
if (!GetFluidMintData(fluidScript, *this)) {
48-
SetNull();
4947
return false;
5048
}
5149
return true;
@@ -60,7 +58,7 @@ void CFluidMint::Serialize(std::vector<unsigned char>& vchData)
6058

6159
CDynamicAddress CFluidMint::GetDestinationAddress() const
6260
{
63-
return CDynamicAddress(StringFromCharVector(DestinationAddress));
61+
return CDynamicAddress(StringFromCharVector(obj_address));
6462
}
6563

6664
CFluidMintDB::CFluidMintDB(size_t nCacheSize, bool fMemory, bool fWipe, bool obfuscate) : CDBWrapper(GetDataDir() / "blocks" / "fluid-mint", nCacheSize, fMemory, fWipe, obfuscate)
@@ -72,7 +70,7 @@ bool CFluidMintDB::AddFluidMintEntry(const CFluidMint& entry, const int op)
7270
bool writeState = false;
7371
{
7472
LOCK(cs_fluid_mint);
75-
writeState = Write(make_pair(std::string("script"), entry.FluidScript), entry) && Write(make_pair(std::string("txid"), entry.txHash), entry.FluidScript);
73+
writeState = Write(make_pair(std::string("script"), entry.GetTransactionScript()), entry) && Write(make_pair(std::string("txid"), entry.GetTransactionHash()), entry.GetTransactionScript());
7674
}
7775

7876
return writeState;
@@ -91,7 +89,7 @@ bool CFluidMintDB::GetLastFluidMintRecord(CFluidMint& returnEntry)
9189
try {
9290
if (pcursor->GetKey(key) && key.first == "script") {
9391
pcursor->GetValue(entry);
94-
if (entry.nHeight > returnEntry.nHeight) {
92+
if (entry.GetHeight() > returnEntry.GetHeight()) {
9593
returnEntry = entry;
9694
}
9795
}

src/fluid/sovereign.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ bool CFluidSovereign::UnserializeFromTx(const CTransaction& tx)
3535
{
3636
int nOut;
3737
if (!GetFluidSovereignData(tx, *this, nOut)) {
38-
SetNull();
3938
return false;
4039
}
4140
return true;
@@ -44,7 +43,6 @@ bool CFluidSovereign::UnserializeFromTx(const CTransaction& tx)
4443
bool CFluidSovereign::UnserializeFromScript(const CScript& fluidScript)
4544
{
4645
if (!GetFluidSovereignData(fluidScript, *this)) {
47-
SetNull();
4846
return false;
4947
}
5048
return true;
@@ -60,7 +58,7 @@ void CFluidSovereign::Serialize(std::vector<unsigned char>& vchData)
6058
std::vector<std::string> CFluidSovereign::SovereignAddressesStrings()
6159
{
6260
std::vector<std::string> vchAddressStrings;
63-
for (const std::vector<unsigned char>& vchAddress : SovereignAddresses) {
61+
for (const std::vector<unsigned char>& vchAddress : obj_sigs) {
6462
vchAddressStrings.push_back(StringFromCharVector(vchAddress));
6563
}
6664
return vchAddressStrings;
@@ -77,13 +75,10 @@ void CFluidSovereignDB::InitEmpty()
7775
LOCK(cs_fluid_sovereign);
7876
CFluidSovereign fluidSovereign;
7977
for (const auto& pk : Params().FluidSignatureKeys()) {
80-
fluidSovereign.SovereignAddresses.push_back(
78+
fluidSovereign.obj_sigs.insert(
8179
CharVectorFromString(CDynamicAddress(pk).ToString())
8280
);
8381
}
84-
fluidSovereign.FluidScript = CharVectorFromString("init sovereign");
85-
fluidSovereign.nTimeStamp = 1;
86-
fluidSovereign.nHeight = 1;
8782
if (!AddFluidSovereignEntry(fluidSovereign)) {
8883
LogPrintf("CFluidSovereignDB::InitEmpty add failed.\n");
8984
}
@@ -95,7 +90,7 @@ bool CFluidSovereignDB::AddFluidSovereignEntry(const CFluidSovereign& entry)
9590
bool writeState = false;
9691
{
9792
LOCK(cs_fluid_sovereign);
98-
writeState = Write(make_pair(std::string("script"), entry.FluidScript), entry) && Write(make_pair(std::string("txid"), entry.txHash), entry.FluidScript);
93+
writeState = Write(make_pair(std::string("script"), entry.GetTransactionScript()), entry) && Write(make_pair(std::string("txid"), entry.GetTransactionHash()), entry.GetTransactionScript());
9994
}
10095
return writeState;
10196
}
@@ -113,7 +108,7 @@ bool CFluidSovereignDB::GetLastFluidSovereignRecord(CFluidSovereign& returnEntry
113108
try {
114109
if (pcursor->GetKey(key) && key.first == "script") {
115110
pcursor->GetValue(entry);
116-
if (entry.nHeight > returnEntry.nHeight) {
111+
if (entry.GetHeight() > returnEntry.GetHeight()) {
117112
returnEntry = entry;
118113
}
119114
}

src/miner/miner-util.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ std::unique_ptr<CBlockTemplate> CreateNewBlock(const CChainParams& chainparams,
287287

288288
if (areWeMinting) {
289289
mintAddress = fluidMint.GetDestinationAddress();
290-
fluidIssuance = fluidMint.MintAmount;
290+
fluidIssuance = fluidMint.GetReward();
291291
txNew.vout[0].nValue = blockReward + fluidIssuance;
292292
} else {
293293
txNew.vout[0].nValue = blockReward;

0 commit comments

Comments
 (0)