Changeset View
Changeset View
Standalone View
Standalone View
src/avalanche/test/proof_tests.cpp
Show All 22 Lines | |||||
BOOST_AUTO_TEST_CASE(proof_random) { | BOOST_AUTO_TEST_CASE(proof_random) { | ||||
for (int i = 0; i < 1000; i++) { | for (int i = 0; i < 1000; i++) { | ||||
const uint32_t score = InsecureRand32(); | const uint32_t score = InsecureRand32(); | ||||
auto p = buildRandomProof(score); | auto p = buildRandomProof(score); | ||||
BOOST_CHECK_EQUAL(p->getScore(), score); | BOOST_CHECK_EQUAL(p->getScore(), score); | ||||
ProofValidationResult expected_state = | ProofValidationResult expected_state = | ||||
hasDustStake(p) ? ProofValidationResult::DUST_THRESOLD | hasDustStake(p) ? ProofValidationResult::DUST_THRESHOLD | ||||
: ProofValidationResult::NONE; | : ProofValidationResult::NONE; | ||||
ProofValidationState state; | ProofValidationState state; | ||||
BOOST_CHECK_EQUAL(p->verify(state), | BOOST_CHECK_EQUAL(p->verify(state), | ||||
state.GetResult() == ProofValidationResult::NONE); | state.GetResult() == ProofValidationResult::NONE); | ||||
BOOST_CHECK(state.GetResult() == expected_state); | BOOST_CHECK(state.GetResult() == expected_state); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 262 Lines • ▼ Show 20 Lines | std::vector<TestVector> legacyFormatTestCases{ | ||||
"a6d6852ffa70b172d37a0ad2c01c2acd21023beefdde700a6bc02036335b4df141c8b" | "a6d6852ffa70b172d37a0ad2c01c2acd21023beefdde700a6bc02036335b4df141c8b" | ||||
"c67bb05a971f5ac2745fd683797dde30145a4d07798547464daa53acefb7c97c0c415" | "c67bb05a971f5ac2745fd683797dde30145a4d07798547464daa53acefb7c97c0c415" | ||||
"ed8e81e549ff56a0ef6f847fcc9ca855b3620000000000000000e707d7272102449fb" | "ed8e81e549ff56a0ef6f847fcc9ca855b3620000000000000000e707d7272102449fb" | ||||
"5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68065cd42e0e6" | "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68065cd42e0e6" | ||||
"9d511ad24ecb3c3af07176bcf890caa7cfc64039dc65e51014dd99d11bd00ffbfbcc1" | "9d511ad24ecb3c3af07176bcf890caa7cfc64039dc65e51014dd99d11bd00ffbfbcc1" | ||||
"9619ca502bfd4dd6dbc0967692ff6d2211b0bd9b9f05e1298", | "9619ca502bfd4dd6dbc0967692ff6d2211b0bd9b9f05e1298", | ||||
ProofId::fromHex("38f7c9696f9c2c07db3f23024d550a6b0b7f851013074280dbe3" | ProofId::fromHex("38f7c9696f9c2c07db3f23024d550a6b0b7f851013074280dbe3" | ||||
"49f42a2a5a00"), | "49f42a2a5a00"), | ||||
0, ProofValidationResult::DUST_THRESOLD}, | 0, ProofValidationResult::DUST_THRESHOLD}, | ||||
}; | }; | ||||
// Proof master key: | // Proof master key: | ||||
// privkey L4J6gEE4wL9ji2EQbzS5dPMTTsw8LRvcMst1Utij4e3X5ccUSdqW | // privkey L4J6gEE4wL9ji2EQbzS5dPMTTsw8LRvcMst1Utij4e3X5ccUSdqW | ||||
std::vector<TestVector> regularFormatTestCases{ | std::vector<TestVector> regularFormatTestCases{ | ||||
// Duplicated from the legacy tests, using P2PK payout to | // Duplicated from the legacy tests, using P2PK payout to | ||||
// 023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3 | // 023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3 | ||||
{"No utxo staked", | {"No utxo staked", | ||||
▲ Show 20 Lines • Show All 258 Lines • ▼ Show 20 Lines | std::vector<TestVector> regularFormatTestCases{ | ||||
"5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680061c669954" | "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680061c669954" | ||||
"f964a68b43b1b354b65b651f349a3ff310a1dcb862aa285f26fc7f6fd0b9cb766f1e1" | "f964a68b43b1b354b65b651f349a3ff310a1dcb862aa285f26fc7f6fd0b9cb766f1e1" | ||||
"f90fc63ce03c956b3dac9a4ac2fff963f643ae1326b08d33c2321023beefdde700a6b" | "f90fc63ce03c956b3dac9a4ac2fff963f643ae1326b08d33c2321023beefdde700a6b" | ||||
"c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac6ad76de70caa0fb07" | "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac6ad76de70caa0fb07" | ||||
"12a44e24f791244f733017920ef42c876220a9c50f0239d97414829fe9103741aba28" | "12a44e24f791244f733017920ef42c876220a9c50f0239d97414829fe9103741aba28" | ||||
"7579d8ea26ca28162e3091d53cc51fd58be9b18d22", | "7579d8ea26ca28162e3091d53cc51fd58be9b18d22", | ||||
ProofId::fromHex("c95e3c6417a799dd3085af689ea12fb3d2e1130870fef9f0bdc6" | ProofId::fromHex("c95e3c6417a799dd3085af689ea12fb3d2e1130870fef9f0bdc6" | ||||
"d10a27df746a"), | "d10a27df746a"), | ||||
0, ProofValidationResult::DUST_THRESOLD}, | 0, ProofValidationResult::DUST_THRESHOLD}, | ||||
// Exclusive tests (not duplicated from legacy) | // Exclusive tests (not duplicated from legacy) | ||||
{"Properly signed 1 UTXO proof, P2PK payout script", | {"Properly signed 1 UTXO proof, P2PK payout script", | ||||
"d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" | "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" | ||||
"c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" | "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" | ||||
"e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" | "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" | ||||
"5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6804534ca1f5e" | "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6804534ca1f5e" | ||||
"22670be3df5cbd5957d8dd83d05c8f17eae391f0e7ffdce4fb3defadb7c079473ebec" | "22670be3df5cbd5957d8dd83d05c8f17eae391f0e7ffdce4fb3defadb7c079473ebec" | ||||
▲ Show 20 Lines • Show All 386 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(verify) { | ||||
{ | { | ||||
ProofBuilder pb(0, 0, key); | ProofBuilder pb(0, 0, key); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
pb.addUTXO(pkh_outpoint, Amount::zero(), height, false, key)); | pb.addUTXO(pkh_outpoint, Amount::zero(), height, false, key)); | ||||
ProofRef p = pb.build(); | ProofRef p = pb.build(); | ||||
ProofValidationState state; | ProofValidationState state; | ||||
BOOST_CHECK(!p->verify(state, coins)); | BOOST_CHECK(!p->verify(state, coins)); | ||||
BOOST_CHECK(state.GetResult() == ProofValidationResult::DUST_THRESOLD); | BOOST_CHECK(state.GetResult() == ProofValidationResult::DUST_THRESHOLD); | ||||
} | } | ||||
{ | { | ||||
ProofBuilder pb(0, 0, key); | ProofBuilder pb(0, 0, key); | ||||
BOOST_CHECK(pb.addUTXO(pkh_outpoint, PROOF_DUST_THRESHOLD - 1 * SATOSHI, | BOOST_CHECK(pb.addUTXO(pkh_outpoint, PROOF_DUST_THRESHOLD - 1 * SATOSHI, | ||||
height, false, key)); | height, false, key)); | ||||
ProofRef p = pb.build(); | ProofRef p = pb.build(); | ||||
ProofValidationState state; | ProofValidationState state; | ||||
BOOST_CHECK(!p->verify(state, coins)); | BOOST_CHECK(!p->verify(state, coins)); | ||||
BOOST_CHECK(state.GetResult() == ProofValidationResult::DUST_THRESOLD); | BOOST_CHECK(state.GetResult() == ProofValidationResult::DUST_THRESHOLD); | ||||
} | } | ||||
// Duplicated input | // Duplicated input | ||||
{ | { | ||||
ProofBuilder pb(0, 0, key); | ProofBuilder pb(0, 0, key); | ||||
BOOST_CHECK(pb.addUTXO(pkh_outpoint, value, height, false, key)); | BOOST_CHECK(pb.addUTXO(pkh_outpoint, value, height, false, key)); | ||||
ProofRef p = TestProofBuilder::buildDuplicatedStakes(pb); | ProofRef p = TestProofBuilder::buildDuplicatedStakes(pb); | ||||
▲ Show 20 Lines • Show All 124 Lines • Show Last 20 Lines |