Changeset View
Changeset View
Standalone View
Standalone View
src/avalanche/proof.cpp
Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | bool Proof::verify(ProofValidationState &state) const { | ||||
} | } | ||||
if (!useLegacy(gArgs)) { | if (!useLegacy(gArgs)) { | ||||
TxoutType scriptType; | TxoutType scriptType; | ||||
if (!IsStandard(payoutScriptPubKey, scriptType)) { | if (!IsStandard(payoutScriptPubKey, scriptType)) { | ||||
return state.Invalid(ProofValidationResult::INVALID_PAYOUT_SCRIPT, | return state.Invalid(ProofValidationResult::INVALID_PAYOUT_SCRIPT, | ||||
"payout-script-non-standard"); | "payout-script-non-standard"); | ||||
} | } | ||||
if (!master.VerifySchnorr(limitedProofId, signature)) { | |||||
return state.Invalid(ProofValidationResult::INVALID_PROOF_SIGNATURE, | |||||
"invalid-proof-signature"); | |||||
} | |||||
} | } | ||||
StakeId prevId = uint256::ZERO; | StakeId prevId = uint256::ZERO; | ||||
std::unordered_set<COutPoint, SaltedOutpointHasher> utxos; | std::unordered_set<COutPoint, SaltedOutpointHasher> utxos; | ||||
for (const SignedStake &ss : stakes) { | for (const SignedStake &ss : stakes) { | ||||
const Stake &s = ss.getStake(); | const Stake &s = ss.getStake(); | ||||
if (s.getAmount() < PROOF_DUST_THRESHOLD) { | if (s.getAmount() < PROOF_DUST_THRESHOLD) { | ||||
return state.Invalid(ProofValidationResult::DUST_THRESOLD, | return state.Invalid(ProofValidationResult::DUST_THRESOLD, | ||||
▲ Show 20 Lines • Show All 96 Lines • Show Last 20 Lines |