Changeset View
Changeset View
Standalone View
Standalone View
src/net_processing.cpp
Show First 20 Lines • Show All 4,019 Lines • ▼ Show 20 Lines | if (msg_type == NetMsgType::AVAHELLO) { | ||||
if (!pfrom.m_avalanche_state) { | if (!pfrom.m_avalanche_state) { | ||||
pfrom.m_avalanche_state = std::make_unique<CNode::AvalancheState>(); | pfrom.m_avalanche_state = std::make_unique<CNode::AvalancheState>(); | ||||
} | } | ||||
CHashVerifier<CDataStream> verifier(&vRecv); | CHashVerifier<CDataStream> verifier(&vRecv); | ||||
avalanche::Delegation &delegation = pfrom.m_avalanche_state->delegation; | avalanche::Delegation &delegation = pfrom.m_avalanche_state->delegation; | ||||
verifier >> delegation; | verifier >> delegation; | ||||
avalanche::Proof proof; | std::optional<CPubKey> master = delegation.getMaster(); | ||||
avalanche::DelegationState state; | if (!master) { | ||||
CPubKey pubkey; | LogPrint(BCLog::NET, | ||||
if (!delegation.verify(state, proof, pubkey)) { | "Ignoring AVAHELLO from peer=%d with empty delegation\n", | ||||
Misbehaving(pfrom, 100, "invalid-delegation"); | pfrom.GetId()); | ||||
return; | return; | ||||
} | } | ||||
SchnorrSig sig; | SchnorrSig sig; | ||||
verifier >> sig; | verifier >> sig; | ||||
if (!master->VerifySchnorr(g_avalanche->buildRemoteSighash(&pfrom), | |||||
sig)) { | |||||
Misbehaving(pfrom, 100, "invalid-avahello-signature"); | |||||
return; | |||||
} | |||||
LogPrint(BCLog::NET, | |||||
"Successfully checked AVAHELLO signature for peer=%d\n", | |||||
pfrom.GetId()); | |||||
return; | |||||
} | } | ||||
if (msg_type == NetMsgType::AVAPOLL) { | if (msg_type == NetMsgType::AVAPOLL) { | ||||
auto now = std::chrono::steady_clock::now(); | auto now = std::chrono::steady_clock::now(); | ||||
int64_t cooldown = | int64_t cooldown = | ||||
gArgs.GetArg("-avacooldown", AVALANCHE_DEFAULT_COOLDOWN); | gArgs.GetArg("-avacooldown", AVALANCHE_DEFAULT_COOLDOWN); | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 1,583 Lines • Show Last 20 Lines |