Skip to content

Commit 375f7cf

Browse files
Merge pull request #577 from qubic/develop (Release v1.265.0)
Release v1.265.0
2 parents c2366be + 032f003 commit 375f7cf

File tree

17 files changed

+1203
-265
lines changed

17 files changed

+1203
-265
lines changed

src/Qubic.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
<ClInclude Include="platform\time.h" />
120120
<ClInclude Include="ticking\ticking.h" />
121121
<ClInclude Include="ticking\tick_storage.h" />
122+
<ClInclude Include="ticking\pending_txs_pool.h" />
122123
<ClInclude Include="vote_counter.h" />
123124
</ItemGroup>
124125
<ItemGroup>

src/Qubic.vcxproj.filters

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@
276276
<ClInclude Include="contract_core\qpi_mining_impl.h">
277277
<Filter>contract_core</Filter>
278278
</ClInclude>
279+
<ClInclude Include="ticking\pending_txs_pool.h">
280+
<Filter>ticking</Filter>
281+
</ClInclude>
279282
<ClInclude Include="contracts\Qdraw.h">
280283
<Filter>contracts</Filter>
281284
</ClInclude>

src/assets/assets.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,7 @@ static bool transferShareOwnershipAndPossession(int sourceOwnershipIndex, int so
516516
assetOwnershipChange.destinationPublicKey = destinationPublicKey;
517517
assetOwnershipChange.issuerPublicKey = issuance.publicKey;
518518
assetOwnershipChange.numberOfShares = numberOfShares;
519+
assetOwnershipChange.managingContractIndex = assets[sourceOwnershipIndex].varStruct.ownership.managingContractIndex;
519520
*((unsigned long long*) & assetOwnershipChange.name) = *((unsigned long long*) & issuance.name); // Order must be preserved!
520521
assetOwnershipChange.numberOfDecimalPlaces = issuance.numberOfDecimalPlaces; // Order must be preserved!
521522
*((unsigned long long*) & assetOwnershipChange.unitOfMeasurement) = *((unsigned long long*) & issuance.unitOfMeasurement); // Order must be preserved!
@@ -526,6 +527,7 @@ static bool transferShareOwnershipAndPossession(int sourceOwnershipIndex, int so
526527
assetPossessionChange.destinationPublicKey = destinationPublicKey;
527528
assetPossessionChange.issuerPublicKey = issuance.publicKey;
528529
assetPossessionChange.numberOfShares = numberOfShares;
530+
assetPossessionChange.managingContractIndex = assets[sourcePossessionIndex].varStruct.possession.managingContractIndex;
529531
*((unsigned long long*) & assetPossessionChange.name) = *((unsigned long long*) & issuance.name); // Order must be preserved!
530532
assetPossessionChange.numberOfDecimalPlaces = issuance.numberOfDecimalPlaces; // Order must be preserved!
531533
*((unsigned long long*) & assetPossessionChange.unitOfMeasurement) = *((unsigned long long*) & issuance.unitOfMeasurement); // Order must be preserved!
@@ -594,6 +596,7 @@ static bool transferShareOwnershipAndPossession(int sourceOwnershipIndex, int so
594596
assetOwnershipChange.destinationPublicKey = destinationPublicKey;
595597
assetOwnershipChange.issuerPublicKey = assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.publicKey;
596598
assetOwnershipChange.numberOfShares = numberOfShares;
599+
assetOwnershipChange.managingContractIndex = assets[sourceOwnershipIndex].varStruct.ownership.managingContractIndex;
597600
*((unsigned long long*) & assetOwnershipChange.name) = *((unsigned long long*) & assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.name); // Order must be preserved!
598601
assetOwnershipChange.numberOfDecimalPlaces = assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.numberOfDecimalPlaces; // Order must be preserved!
599602
*((unsigned long long*) & assetOwnershipChange.unitOfMeasurement) = *((unsigned long long*) & assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.unitOfMeasurement); // Order must be preserved!
@@ -604,6 +607,7 @@ static bool transferShareOwnershipAndPossession(int sourceOwnershipIndex, int so
604607
assetPossessionChange.destinationPublicKey = destinationPublicKey;
605608
assetPossessionChange.issuerPublicKey = assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.publicKey;
606609
assetPossessionChange.numberOfShares = numberOfShares;
610+
assetPossessionChange.managingContractIndex = assets[sourcePossessionIndex].varStruct.possession.managingContractIndex;
607611
*((unsigned long long*) & assetPossessionChange.name) = *((unsigned long long*) & assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.name); // Order must be preserved!
608612
assetPossessionChange.numberOfDecimalPlaces = assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.numberOfDecimalPlaces; // Order must be preserved!
609613
*((unsigned long long*) & assetPossessionChange.unitOfMeasurement) = *((unsigned long long*) & assets[assets[sourceOwnershipIndex].varStruct.ownership.issuanceIndex].varStruct.issuance.unitOfMeasurement); // Order must be preserved!

src/contracts/RandomLottery.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -404,10 +404,9 @@ struct RL : public ContractBase
404404
{
405405
return;
406406
}
407-
if (RL_MAX_NUMBER_OF_WINNERS_IN_HISTORY >= state.winners.capacity() - 1)
408-
{
409-
state.winnersInfoNextEmptyIndex = 0;
410-
}
407+
408+
state.winnersInfoNextEmptyIndex = mod<uint64>(state.winnersInfoNextEmptyIndex, state.winners.capacity());
409+
411410
locals.winnerInfo.winnerAddress = input.winnerAddress;
412411
locals.winnerInfo.revenue = input.revenue;
413412
locals.winnerInfo.epoch = qpi.epoch();

src/contracts/math_lib.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,21 @@ inline static unsigned char divUp(unsigned char a, unsigned char b)
4949
return b ? ((a + b - 1) / b) : 0;
5050
}
5151

52+
inline constexpr unsigned long long findNextPowerOf2(unsigned long long num)
53+
{
54+
if (num == 0)
55+
return 1;
56+
57+
num--;
58+
num |= num >> 1;
59+
num |= num >> 2;
60+
num |= num >> 4;
61+
num |= num >> 8;
62+
num |= num >> 16;
63+
num |= num >> 32;
64+
num++;
65+
66+
return num;
67+
}
68+
5269
}

src/logging/logging.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ struct AssetOwnershipChange
9090
m256i destinationPublicKey;
9191
m256i issuerPublicKey;
9292
long long numberOfShares;
93+
long long managingContractIndex;
9394
char name[7];
9495
char numberOfDecimalPlaces;
9596
char unitOfMeasurement[7];
@@ -103,6 +104,7 @@ struct AssetPossessionChange
103104
m256i destinationPublicKey;
104105
m256i issuerPublicKey;
105106
long long numberOfShares;
107+
long long managingContractIndex;
106108
char name[7];
107109
char numberOfDecimalPlaces;
108110
char unitOfMeasurement[7];

src/logging/net_msg_impl.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@ void qLogger::processRequestLog(unsigned long long processorNumber, Peer* peer,
4141
}
4242
else
4343
{
44-
enqueueResponse(peer, 0, RespondLog::type, header->dejavu(), NULL);
44+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
4545
}
4646
}
4747
else
4848
{
49-
enqueueResponse(peer, 0, RespondLog::type, header->dejavu(), NULL);
49+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
5050
}
5151
return;
5252
}
5353
#endif
54-
enqueueResponse(peer, 0, RespondLog::type, header->dejavu(), NULL);
54+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
5555
}
5656

5757
void qLogger::processRequestTxLogInfo(unsigned long long processorNumber, Peer* peer, RequestResponseHeader* header)
@@ -83,7 +83,7 @@ void qLogger::processRequestTxLogInfo(unsigned long long processorNumber, Peer*
8383
return;
8484
}
8585
#endif
86-
enqueueResponse(peer, 0, ResponseLogIdRangeFromTx::type, header->dejavu(), NULL);
86+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
8787
}
8888

8989
void qLogger::processRequestTickTxLogInfo(unsigned long long processorNumber, Peer* peer, RequestResponseHeader* header)
@@ -116,7 +116,7 @@ void qLogger::processRequestTickTxLogInfo(unsigned long long processorNumber, Pe
116116
return;
117117
}
118118
#endif
119-
enqueueResponse(peer, 0, ResponseAllLogIdRangesFromTick::type, header->dejavu(), NULL);
119+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
120120
}
121121

122122
void qLogger::processRequestPrunePageFile(Peer* peer, RequestResponseHeader* header)
@@ -170,7 +170,7 @@ void qLogger::processRequestPrunePageFile(Peer* peer, RequestResponseHeader* hea
170170
return;
171171
}
172172
#endif
173-
enqueueResponse(peer, 0, ResponsePruningLog::type, header->dejavu(), NULL);
173+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
174174
}
175175

176176
void qLogger::processRequestGetLogDigest(Peer* peer, RequestResponseHeader* header)
@@ -190,5 +190,5 @@ void qLogger::processRequestGetLogDigest(Peer* peer, RequestResponseHeader* head
190190
return;
191191
}
192192
#endif
193-
enqueueResponse(peer, 0, ResponseLogStateDigest::type, header->dejavu(), NULL);
193+
enqueueResponse(peer, 0, EndResponse::type, header->dejavu(), NULL);
194194
}

src/mining/mining.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ struct BroadcastCustomMiningTransaction
130130
bool isBroadcasted;
131131
};
132132

133-
BroadcastCustomMiningTransaction gCustomMiningBroadcastTxBuffer[NUMBER_OF_COMPUTORS];
133+
static BroadcastCustomMiningTransaction gCustomMiningBroadcastTxBuffer[NUMBER_OF_COMPUTORS];
134134

135135
class CustomMiningSharesCounter
136136
{
@@ -1226,15 +1226,15 @@ static CustomMiningStorage gCustomMiningStorage;
12261226
static CustomMiningStats gCustomMiningStats;
12271227

12281228

1229-
int customMiningInitialize()
1229+
static int customMiningInitialize()
12301230
{
12311231
gCustomMiningStorage.init();
12321232
gSystemCustomMiningSolutionV2Cache.init();
12331233

12341234
return 0;
12351235
}
12361236

1237-
int customMiningDeinitialize()
1237+
static int customMiningDeinitialize()
12381238
{
12391239
gCustomMiningStorage.deinit();
12401240
return 0;
@@ -1243,7 +1243,7 @@ int customMiningDeinitialize()
12431243
#ifdef NO_UEFI
12441244
#else
12451245
// Save score cache to SCORE_CACHE_FILE_NAME
1246-
void saveCustomMiningCache(int epoch, CHAR16* directory = NULL)
1246+
static void saveCustomMiningCache(int epoch, CHAR16* directory = NULL)
12471247
{
12481248
logToConsole(L"Saving custom mining cache file...");
12491249
CUSTOM_MINING_CACHE_FILE_NAME[sizeof(CUSTOM_MINING_CACHE_FILE_NAME) / sizeof(CUSTOM_MINING_CACHE_FILE_NAME[0]) - 4] = epoch / 100 + L'0';
@@ -1253,7 +1253,7 @@ void saveCustomMiningCache(int epoch, CHAR16* directory = NULL)
12531253
}
12541254

12551255
// Update score cache filename with epoch and try to load file
1256-
bool loadCustomMiningCache(int epoch)
1256+
static bool loadCustomMiningCache(int epoch)
12571257
{
12581258
logToConsole(L"Loading custom mining cache...");
12591259
bool success = true;

src/public_settings.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
#define TICK_DURATION_FOR_ALLOCATION_MS 750
3232
#define TRANSACTION_SPARSENESS 1
3333

34+
// Number of ticks that are stored in the pending txs pool. This also defines how many ticks in advance a tx can be registered.
35+
#define PENDING_TXS_POOL_NUM_TICKS (1000 * 60 * 10ULL / TICK_DURATION_FOR_ALLOCATION_MS) // 10 minutes
36+
3437
// Below are 2 variables that are used for auto-F5 feature:
3538
#define AUTO_FORCE_NEXT_TICK_THRESHOLD 0ULL // Multiplier of TARGET_TICK_DURATION for the system to detect "F5 case" | set to 0 to disable
3639
// to prevent bad actor causing misalignment.
@@ -61,12 +64,12 @@ static_assert(AUTO_FORCE_NEXT_TICK_THRESHOLD* TARGET_TICK_DURATION >= PEER_REFRE
6164
// Config options that should NOT be changed by operators
6265

6366
#define VERSION_A 1
64-
#define VERSION_B 264
67+
#define VERSION_B 265
6568
#define VERSION_C 0
6669

6770
// Epoch and initial tick for node startup
68-
#define EPOCH 183
69-
#define TICK 34815000
71+
#define EPOCH 184
72+
#define TICK 35340000
7073
#define TICK_IS_FIRST_TICK_OF_EPOCH 1 // Set to 0 if the network is restarted during the EPOCH with a new initial TICK
7174

7275
#define ARBITRATOR "AFZPUAIYVPNUYGJRQVLUKOPPVLHAZQTGLYAAUUNBXFTVTAMSBKQBLEIEPCVJ"

0 commit comments

Comments
 (0)