Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ BITCOIN_CORE_H = \
util/check.h \
util/error.h \
util/fees.h \
util/irange.h \
util/spanparsing.h \
util/system.h \
util/asmap.h \
Expand Down
27 changes: 14 additions & 13 deletions src/bench/bls_dkg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#include <bench/bench.h>
#include <random.h>
#include <bls/bls_worker.h>
#include <random.h>
#include <util/irange.h>

struct Member {
CBLSId id;
Expand All @@ -27,24 +28,24 @@ class DKG
void ReceiveVvecs()
{
receivedVvecs.clear();
for (size_t i = 0; i < members.size(); i++) {
receivedVvecs.emplace_back(members[i].vvec);
for (const auto& member : members) {
receivedVvecs.emplace_back(member.vvec);
}
quorumVvec = blsWorker.BuildQuorumVerificationVector(receivedVvecs);
}

void ReceiveShares(size_t whoAmI)
{
receivedSkShares.clear();
for (size_t i = 0; i < members.size(); i++) {
receivedSkShares.emplace_back(members[i].skShares[whoAmI]);
for (const auto& member : members) {
receivedSkShares.emplace_back(member.skShares[whoAmI]);
}
}

void VerifyContributionShares(size_t whoAmI, const std::set<size_t>& invalidIndexes, bool aggregated)
{
auto result = blsWorker.VerifyContributionShares(members[whoAmI].id, receivedVvecs, receivedSkShares, aggregated);
for (size_t i = 0; i < receivedVvecs.size(); i++) {
for (const size_t i : irange::range(receivedVvecs.size())) {
if (invalidIndexes.count(i)) {
assert(!result[i]);
} else {
Expand All @@ -59,16 +60,16 @@ class DKG
members.reserve(quorumSize);
ids.reserve(quorumSize);

for (int i = 0; i < quorumSize; i++) {
for (const int i : irange::range(quorumSize)) {
uint256 id;
WriteLE64(id.begin(), i + 1);
members.push_back({CBLSId(id), {}, {}});
ids.emplace_back(id);
}

blsWorker.Start();
for (int i = 0; i < quorumSize; i++) {
blsWorker.GenerateContributions(quorumSize / 2 + 1, ids, members[i].vvec, members[i].skShares);
for (auto& member : members) {
blsWorker.GenerateContributions(quorumSize / 2 + 1, ids, member.vvec, member.skShares);
}
}
~DKG()
Expand All @@ -93,7 +94,7 @@ class DKG
ReceiveShares(memberIdx);

std::set<size_t> invalidIndexes;
for (int i = 0; i < invalidCount; i++) {
for ([[maybe_unused]] const auto _ : irange::range(invalidCount)) {
int shareIdx = GetRandInt(receivedSkShares.size());
receivedSkShares[shareIdx].MakeNewKey();
invalidIndexes.emplace(shareIdx);
Expand All @@ -112,15 +113,15 @@ static void BLSDKG_GenerateContributions(benchmark::Bench& bench, uint32_t epoch
blsWorker.Start();
std::vector<CBLSId> ids;
std::vector<Member> members;
for (int i = 0; i < quorumSize; i++) {
for (const int i : irange::range(quorumSize)) {
uint256 id;
WriteLE64(id.begin(), i + 1);
members.push_back({CBLSId(id), {}, {}});
ids.emplace_back(id);
}
bench.minEpochIterations(epoch_iters).run([&blsWorker, &quorumSize, &ids, &members] {
for (int i = 0; i < quorumSize; i++) {
blsWorker.GenerateContributions(quorumSize / 2 + 1, ids, members[i].vvec, members[i].skShares);
for (auto& member : members) {
blsWorker.GenerateContributions(quorumSize / 2 + 1, ids, member.vvec, member.skShares);
}
});
blsWorker.Stop();
Expand Down
7 changes: 4 additions & 3 deletions src/coinjoin/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <netmessagemaker.h>
#include <script/sign.h>
#include <shutdown.h>
#include <util/irange.h>
#include <util/moneystr.h>
#include <util/ranges.h>
#include <util/system.h>
Expand Down Expand Up @@ -579,7 +580,7 @@ bool CCoinJoinClientSession::SignFinalTransaction(const CTransaction& finalTrans
int nMyInputIndex = -1;
CScript prevPubKey = CScript();

for (unsigned int i = 0; i < finalMutableTransaction.vin.size(); i++) {
for (const auto i : irange::range(finalMutableTransaction.vin.size())) {
if (finalMutableTransaction.vin[i] == txdsin) {
nMyInputIndex = i;
prevPubKey = txdsin.prevPubKey;
Expand Down Expand Up @@ -1222,7 +1223,7 @@ bool CCoinJoinClientSession::SubmitDenominate(CConnman& connman)

std::vector<std::pair<int, size_t> > vecInputsByRounds;

for (int i = 0; i < CCoinJoinClientOptions::GetRounds() + CCoinJoinClientOptions::GetRandomRounds(); i++) {
for (const auto i : irange::range(CCoinJoinClientOptions::GetRounds() + CCoinJoinClientOptions::GetRandomRounds())) {
if (PrepareDenominate(i, i, strError, vecTxDSIn, vecPSInOutPairsTmp, true)) {
LogPrint(BCLog::COINJOIN, "CCoinJoinClientSession::SubmitDenominate -- Running CoinJoin denominate for %d rounds, success\n", i);
vecInputsByRounds.emplace_back(i, vecPSInOutPairsTmp.size());
Expand Down Expand Up @@ -1712,7 +1713,7 @@ bool CCoinJoinClientSession::CreateDenominated(CAmount nBalanceToDenominate, con
LogPrint(BCLog::COINJOIN, "CCoinJoinClientSession::%s -- 2 - nBalanceToDenominate: %f, nDenomValue: %f, denomsToCreateValue: %d, denomsToCreateBal: %d\n",
__func__, (float) nBalanceToDenominate / COIN, (float) nDenomValue / COIN, denomsToCreateValue, denomsToCreateBal);
auto it = mapDenomCount.find(nDenomValue);
for (int i = 0; i < denomsToCreate; i++) {
for (const auto i : irange::range(denomsToCreate)) {
// Never go above the cap unless it's the largest denom
if (nDenomValue != nLargestDenomValue && it->second >= CCoinJoinClientOptions::GetDenomsHardCap()) break;

Expand Down
16 changes: 8 additions & 8 deletions src/coinjoin/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@

#include <coinjoin/server.h>

#include <masternode/node.h>
#include <evo/deterministicmns.h>
#include <consensus/validation.h>
#include <core_io.h>
#include <evo/deterministicmns.h>
#include <masternode/meta.h>
#include <masternode/node.h>
#include <masternode/sync.h>
#include <net_processing.h>
#include <netmessagemaker.h>
#include <script/interpreter.h>
#include <shutdown.h>
#include <txmempool.h>
#include <util/moneystr.h>
#include <util/ranges.h>
#include <util/system.h>
#include <util/moneystr.h>
#include <validation.h>
#include <version.h>

Expand Down Expand Up @@ -272,11 +272,11 @@ void CCoinJoinServer::CreateFinalTransaction(CConnman& connman)
CMutableTransaction txNew;

// make our new transaction
for (int i = 0; i < GetEntriesCountLocked(); i++) {
for (const auto& txout : vecEntries[i].vecTxOut) {
for (const auto& entry : vecEntries) {
for (const auto& txout : entry.vecTxOut) {
txNew.vout.push_back(txout);
}
for (const auto& txdsin : vecEntries[i].vecTxDSIn) {
for (const auto& txdsin : entry.vecTxDSIn) {
txNew.vin.push_back(txdsin);
}
}
Expand Down Expand Up @@ -632,8 +632,8 @@ bool CCoinJoinServer::AddScriptSig(const CTxIn& txinNew)
LogPrint(BCLog::COINJOIN, "CCoinJoinServer::AddScriptSig -- adding to finalMutableTransaction, scriptSig=%s\n", ScriptToAsmStr(txinNew.scriptSig).substr(0, 24));
}
}
for (int i = 0; i < GetEntriesCountLocked(); i++) {
if (vecEntries[i].AddScriptSig(txinNew)) {
for (auto& entry : vecEntries) {
if (entry.AddScriptSig(txinNew)) {
LogPrint(BCLog::COINJOIN, "CCoinJoinServer::AddScriptSig -- adding to entries, scriptSig=%s\n", ScriptToAsmStr(txinNew.scriptSig).substr(0, 24));
return true;
}
Expand Down
9 changes: 5 additions & 4 deletions src/llmq/blockprocessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@
#include <net_processing.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <validation.h>
#include <saltedhasher.h>
#include <sync.h>
#include <util/irange.h>
#include <validation.h>

#include <map>

Expand Down Expand Up @@ -446,7 +447,7 @@ bool CQuorumBlockProcessor::IsCommitmentRequired(const Consensus::LLMQParams& ll
assert(nHeight <= ::ChainActive().Height() + 1);
const auto *const pindex = ::ChainActive().Height() < nHeight ? ::ChainActive().Tip() : ::ChainActive().Tip()->GetAncestor(nHeight);

for (int quorumIndex = 0; quorumIndex < llmqParams.signingActiveQuorumCount; ++quorumIndex) {
for (const auto quorumIndex : irange::range(llmqParams.signingActiveQuorumCount)) {
uint256 quorumHash = GetQuorumBlockHash(llmqParams, nHeight, quorumIndex);
if (quorumHash.IsNull()) return false;
if (HasMinedCommitment(llmqParams.type, quorumHash)) return false;
Expand Down Expand Up @@ -600,7 +601,7 @@ std::vector<std::pair<int, const CBlockIndex*>> CQuorumBlockProcessor::GetLastMi
const Consensus::LLMQParams& llmqParams = GetLLMQParams(llmqType);
std::vector<std::pair<int, const CBlockIndex*>> ret;

for (int quorumIndex = 0; quorumIndex < llmqParams.signingActiveQuorumCount; ++quorumIndex) {
for (const auto quorumIndex : irange::range(llmqParams.signingActiveQuorumCount)) {
std::optional<const CBlockIndex*> q = GetLastMinedCommitmentsByQuorumIndexUntilBlock(llmqType, pindex, quorumIndex, cycle);
if (q.has_value()) {
ret.emplace_back(quorumIndex, q.value());
Expand Down Expand Up @@ -728,7 +729,7 @@ std::optional<std::vector<CFinalCommitment>> CQuorumBlockProcessor::GetMineableC
const auto *const pindex = ::ChainActive().Height() < nHeight ? ::ChainActive().Tip() : ::ChainActive().Tip()->GetAncestor(nHeight);

std::stringstream ss;
for (int quorumIndex = 0; quorumIndex < llmqParams.signingActiveQuorumCount; ++quorumIndex) {
for (const auto quorumIndex : irange::range(llmqParams.signingActiveQuorumCount)) {
CFinalCommitment cf;

uint256 quorumHash = GetQuorumBlockHash(llmqParams, nHeight, quorumIndex);
Expand Down
11 changes: 6 additions & 5 deletions src/llmq/commitment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <chainparams.h>
#include <consensus/validation.h>
#include <logging.h>
#include <util/irange.h>
#include <validation.h>

namespace llmq
Expand Down Expand Up @@ -80,16 +81,16 @@ bool CFinalCommitment::Verify(const CBlockIndex* pQuorumBaseBlockIndex, bool che
}
auto members = CLLMQUtils::GetAllQuorumMembers(llmqType, pQuorumBaseBlockIndex);
std::stringstream ss;
for (size_t i = 0; i < llmq_params.size; i++) {
for (const auto i : irange::range(llmq_params.size)) {
ss << "v[" << i << "]=" << validMembers[i];
}
std::stringstream ss2;
for (size_t i = 0; i < llmq_params.size; i++) {
for (const auto i : irange::range(llmq_params.size)) {
ss2 << "s[" << i << "]=" << signers[i];
}

LogPrintfFinalCommitment("CFinalCommitment::%s mns[%d] validMembers[%s] signers[%s]\n", __func__, members.size(), ss.str(), ss2.str());
for (size_t i = members.size(); i < size_t(llmq_params.size); i++) {
for (const auto i : irange::range(members.size(), size_t(llmq_params.size))) {
if (validMembers[i]) {
LogPrintfFinalCommitment("q[%s] invalid validMembers bitset. bit %d should not be set\n", quorumHash.ToString(), i);
return false;
Expand All @@ -109,7 +110,7 @@ bool CFinalCommitment::Verify(const CBlockIndex* pQuorumBaseBlockIndex, bool che
}
LogPrintfFinalCommitment("CFinalCommitment::%s members[%s] quorumPublicKey[%s] commitmentHash[%s]\n", __func__, ss3.str(), quorumPublicKey.ToString(), commitmentHash.ToString());
std::vector<CBLSPublicKey> memberPubKeys;
for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
if (!signers[i]) {
continue;
}
Expand Down Expand Up @@ -168,7 +169,7 @@ bool CheckLLMQCommitment(const CTransaction& tx, const CBlockIndex* pindexPrev,
}
const auto& llmq_params = GetLLMQParams(qcTx.commitment.llmqType);
std::stringstream ss;
for (size_t i = 0; i < llmq_params.size; i++) {
for (const auto i : irange::range(llmq_params.size)) {
ss << "v[" << i << "]=" << qcTx.commitment.validMembers[i];
}
LogPrintfFinalCommitment("%s llmqType[%d] validMembers[%s] signers[]\n", __func__, int(qcTx.commitment.llmqType), ss.str());
Expand Down
3 changes: 2 additions & 1 deletion src/llmq/debug.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

#include <evo/deterministicmns.h>
#include <llmq/utils.h>
#include <util/irange.h>

namespace llmq
{
Expand Down Expand Up @@ -79,7 +80,7 @@ UniValue CDKGDebugSessionStatus::ToJson(int quorumIndex, int detailLevel) const
}
};

for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
add(badMembers, i, m.bad);
add(weComplain, i, m.weComplain);
Expand Down
19 changes: 10 additions & 9 deletions src/llmq/dkgsession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#include <cxxtimer.hpp>
#include <memory>
#include <util/irange.h>

namespace llmq
{
Expand Down Expand Up @@ -79,14 +80,14 @@ bool CDKGSession::Init(const CBlockIndex* _pQuorumBaseBlockIndex, const std::vec
receivedSkContributions.resize(members.size());
vecEncryptedContributions.resize(members.size());

for (size_t i = 0; i < mns.size(); i++) {
for (const auto i : irange::range(mns.size())) {
members[i] = std::make_unique<CDKGMember>(mns[i], i);
membersMap.emplace(members[i]->dmn->proTxHash, i);
memberIds[i] = members[i]->id;
}

if (!_myProTxHash.IsNull()) {
for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
if (m->dmn->proTxHash == _myProTxHash) {
myIdx = i;
Expand Down Expand Up @@ -176,7 +177,7 @@ void CDKGSession::SendContributions(CDKGPendingMessages& pendingMessages)
qc.contributions = std::make_shared<CBLSIESMultiRecipientObjects<CBLSSecretKey>>();
qc.contributions->InitEncrypt(members.size());

for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
CBLSSecretKey skContrib = skContributions[i];

Expand Down Expand Up @@ -383,7 +384,7 @@ void CDKGSession::VerifyPendingContributions()
return;
}

for (size_t i = 0; i < memberIndexes.size(); i++) {
for (const auto i : irange::range(memberIndexes.size())) {
if (!result[i]) {
const auto& m = members[memberIndexes[i]];
logger.Batch("invalid contribution from %s. will complain later", m->dmn->proTxHash.ToString());
Expand Down Expand Up @@ -493,7 +494,7 @@ void CDKGSession::SendComplaint(CDKGPendingMessages& pendingMessages)

int badCount = 0;
int complaintCount = 0;
for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
if (m->bad || m->badConnection) {
qc.badMembers[i] = true;
Expand Down Expand Up @@ -601,7 +602,7 @@ void CDKGSession::ReceiveMessage(const CDKGComplaint& qc, bool& retBan)
}

int receivedCount = 0;
for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
if (qc.badMembers[i]) {
logger.Batch("%s voted for %s to be bad", member->dmn->proTxHash.ToString(), m->dmn->proTxHash.ToString());
Expand Down Expand Up @@ -682,7 +683,7 @@ void CDKGSession::SendJustification(CDKGPendingMessages& pendingMessages, const
qj.proTxHash = myProTxHash;
qj.contributions.reserve(forMembers.size());

for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
if (!forMembers.count(m->dmn->proTxHash)) {
continue;
Expand Down Expand Up @@ -929,7 +930,7 @@ void CDKGSession::SendCommitment(CDKGPendingMessages& pendingMessages)
qc.quorumHash = m_quorum_base_block_index->GetBlockHash();
qc.proTxHash = myProTxHash;

for (size_t i = 0; i < members.size(); i++) {
for (const auto i : irange::range(members.size())) {
const auto& m = members[i];
if (!m->bad) {
qc.validMembers[i] = true;
Expand Down Expand Up @@ -1069,7 +1070,7 @@ bool CDKGSession::PreVerifyMessage(const CDKGPrematureCommitment& qc, bool& retB
return false;
}

for (size_t i = members.size(); i < size_t(params.size); i++) {
for (const auto i : irange::range(members.size(), size_t(params.size))) {
if (qc.validMembers[i]) {
retBan = true;
logger.Batch("invalid validMembers bitset. bit %d should not be set", i);
Expand Down
Loading