From fdfd999d10bfda638fcc45fc4768c8f40032db8a Mon Sep 17 00:00:00 2001 From: furszy Date: Wed, 15 May 2019 17:40:51 +0200 Subject: [PATCH] [zPIV[Unit Test] Possible redundant denomination validation. --- src/test/zerocoin_transactions_tests.cpp | 5 +++++ src/zpiv/zpivmodule.cpp | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/test/zerocoin_transactions_tests.cpp b/src/test/zerocoin_transactions_tests.cpp index 51aa3b605bcc6..979ded2182c31 100644 --- a/src/test/zerocoin_transactions_tests.cpp +++ b/src/test/zerocoin_transactions_tests.cpp @@ -109,6 +109,11 @@ BOOST_AUTO_TEST_CASE(zerocoin_public_spend_test) BOOST_CHECK_MESSAGE(publicSpendTest.HasValidSignature(), "Failed to validate public spend signature"); BOOST_CHECK_MESSAGE(spend->HasValidSignature(), "Failed to validate spend signature"); + // Verify that fails with a different denomination + in.nSequence = 500; + PublicCoinSpend publicSpend2(ZCParams); + BOOST_CHECK_MESSAGE(!ZPIVModule::validateInput(in, out, tx, publicSpend2), "Different denomination"); + } BOOST_AUTO_TEST_SUITE_END() diff --git a/src/zpiv/zpivmodule.cpp b/src/zpiv/zpivmodule.cpp index 8134497e45293..e84622f8e13f4 100644 --- a/src/zpiv/zpivmodule.cpp +++ b/src/zpiv/zpivmodule.cpp @@ -103,10 +103,13 @@ namespace ZPIVModule { bool validateInput(const CTxIn &in, const CTxOut &prevOut, const CTransaction &tx, PublicCoinSpend &publicSpend) { // Now prove that the commitment value opens to the input if (!parseCoinSpend(in, tx, prevOut, publicSpend)) { - std::cout << "parse failed" << std::endl; return false; } - // TODO: Validate that the prev out has the same spend denom? + if (libzerocoin::ZerocoinDenominationToAmount( + libzerocoin::IntToZerocoinDenomination(in.nSequence)) != prevOut.nValue) { + return error("PublicCoinSpend validateInput :: input nSequence different to prevout value\n"); + } + return publicSpend.validate(); }