diff --git a/src/avalanche/proof.h b/src/avalanche/proof.h --- a/src/avalanche/proof.h +++ b/src/avalanche/proof.h @@ -102,6 +102,7 @@ CPubKey master; std::vector stakes; CScript payoutScriptPubKey; + SchnorrSig signature; LimitedProofId limitedProofId; ProofId proofid; @@ -113,17 +114,19 @@ payoutScriptPubKey(CScript()), limitedProofId(), proofid() {} Proof(uint64_t sequence_, int64_t expirationTime_, CPubKey master_, - std::vector stakes_, const CScript &payoutScriptPubKey_) + std::vector stakes_, const CScript &payoutScriptPubKey_, + SchnorrSig signature_) : sequence(sequence_), expirationTime(expirationTime_), master(std::move(master_)), stakes(std::move(stakes_)), - payoutScriptPubKey(payoutScriptPubKey_) { + payoutScriptPubKey(payoutScriptPubKey_), + signature(std::move(signature_)) { computeProofId(); } SERIALIZE_METHODS(Proof, obj) { READWRITE(obj.sequence, obj.expirationTime, obj.master, obj.stakes); if (!useLegacy(gArgs)) { - READWRITE(obj.payoutScriptPubKey); + READWRITE(obj.payoutScriptPubKey, obj.signature); } SER_READ(obj, obj.computeProofId()); } diff --git a/src/avalanche/proof.cpp b/src/avalanche/proof.cpp --- a/src/avalanche/proof.cpp +++ b/src/avalanche/proof.cpp @@ -97,6 +97,11 @@ return state.Invalid(ProofValidationResult::INVALID_PAYOUT_SCRIPT, "payout-script-non-standard"); } + + if (!master.VerifySchnorr(limitedProofId, signature)) { + return state.Invalid(ProofValidationResult::INVALID_PROOF_SIGNATURE, + "invalid-proof-signature"); + } } StakeId prevId = uint256::ZERO; diff --git a/src/avalanche/proofbuilder.h b/src/avalanche/proofbuilder.h --- a/src/avalanche/proofbuilder.h +++ b/src/avalanche/proofbuilder.h @@ -50,6 +50,7 @@ Proof build(); private: + LimitedProofId getLimitedProofId() const; ProofId getProofId() const; friend struct TestProofBuilder; diff --git a/src/avalanche/proofbuilder.cpp b/src/avalanche/proofbuilder.cpp --- a/src/avalanche/proofbuilder.cpp +++ b/src/avalanche/proofbuilder.cpp @@ -33,6 +33,12 @@ } Proof ProofBuilder::build() { + SchnorrSig proofSignature; + const LimitedProofId limitedProofId = getLimitedProofId(); + if (!masterKey.SignSchnorr(limitedProofId, proofSignature)) { + proofSignature.fill(0); + } + const ProofId proofid = getProofId(); const StakeCommitment commitment(proofid); @@ -45,10 +51,11 @@ } return Proof(sequence, expirationTime, masterKey.GetPubKey(), - std::move(signedStakes), payoutScriptPubKey); + std::move(signedStakes), payoutScriptPubKey, + std::move(proofSignature)); } -ProofId ProofBuilder::getProofId() const { +LimitedProofId ProofBuilder::getLimitedProofId() const { CHashWriter ss(SER_GETHASH, 0); ss << sequence; ss << expirationTime; @@ -62,11 +69,15 @@ ss << s.stake; } - CHashWriter ss2(SER_GETHASH, 0); - ss2 << ss.GetHash(); - ss2 << masterKey.GetPubKey(); + return LimitedProofId(ss.GetHash()); +} + +ProofId ProofBuilder::getProofId() const { + CHashWriter ss(SER_GETHASH, 0); + ss << getLimitedProofId(); + ss << masterKey.GetPubKey(); - return ProofId(ss2.GetHash()); + return ProofId(ss.GetHash()); } } // namespace avalanche diff --git a/src/avalanche/test/proof_tests.cpp b/src/avalanche/test/proof_tests.cpp --- a/src/avalanche/test/proof_tests.cpp +++ b/src/avalanche/test/proof_tests.cpp @@ -309,263 +309,276 @@ 0, ProofValidationResult::DUST_THRESOLD}, }; + // Proof master key: + // privkey L4J6gEE4wL9ji2EQbzS5dPMTTsw8LRvcMst1Utij4e3X5ccUSdqW std::vector regularFormatTestCases{ // Duplicated from the legacy tests, using P2PK payout to // 023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3 {"No utxo staked", - "96527eae083f1f24625f049d9e54bb9a2102a93d98bf42ab90cfc0bf9e7c634ed76a7" - "3e95b02cacfd357b64e4fb6c92e92dd002321023beefdde700a6bc02036335b4df141" - "c8bc67bb05a971f5ac2745fd683797dde3ac", - ProofId::fromHex("8719ca0244b057c83f27d42ea494e1db3cd07a60c097e38bb953" - "a8e8b3ebd8c0"), + "96527eae083f1f24625f049d9e54bb9a21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde3002321023beefdde700a6bc02036335b4df141" + "c8bc67bb05a971f5ac2745fd683797dde3ac135da984db510334abe41134e3d4ef09a" + "d006b1152be8bc413182bf6f947eac1f8580fe265a382195aa2d73935cabf86d90a8f" + "666d0a62385ae24732eca51575", + ProofId::fromHex("979dbc3b1351ee12f91f537e04e61fdf93a73d5ebfc317bccd12" + "643b8be87b02"), 0, ProofValidationResult::NO_STAKE}, {"1 utxo staked", - "a6d66db9fe9378fdd37a0ad2c01c2acd2103648144bb6a0c1d09b0f04d0df6d55f914" - "fd81efc65f23a718b68b7c9e42bd5430145a4d07798547464daa53acefb7c97c0c415" + "a6d66db9fe9378fdd37a0ad2c01c2acd21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30145a4d07798547464daa53acefb7c97c0c415" "ed8e81e549ff56a0ef6f847fcc9ca855b36200fe38dce5060000e707d7274104fb662" "6e21dbd1cc9feeecdefc9213fdce2b51ac4bb44e1f8dc6f14c2052f5dd7bfaeb2267a" "97ca2bec6e0dd4acf50a66204bde1ebb5d6c551684cff2f939920f7fbb2efd860d6d5" "926bf425eb47b78bf6979cdcd67eb705e2c9a4d45a0930ba25463178a3fb99cb28c8b" "77d8fcf68c54ebfadf08b9a446c251a0088301c50d532321023beefdde700a6bc0203" - "6335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac", - ProofId::fromHex("4cb43743f4bc8be65b0cfbbbefb6782a8ac0f04ab67e4a92ac12" - "c5a0a33b1365"), + "6335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac845148594a3067f06bc2cf" + "495a1191c00e012dd3d0e4b0c393b3e46c2adcebc3df50f1a203f02e445a0101f4675" + "26becb0aa4c64400a10bbde83b3f0290bdeaa", + ProofId::fromHex("e01bac293ed39e8d5e06214e7fe0bceb9646ef253ce501dcd7a4" + "75f802ab07f1"), 7584312, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"2 utxo staked", - "872379ab64f55b4166ca0e79639999ec4104a66861de557a54eefc0375264cc17c3a3" - "50ccabca6fd9c91883e899ab55bb140517aa56c5b4041908e7027a786b99f66488a04" - "135ce5fe189a99a7bc541ddfe602fabf3ad5b875840e7813a66d5ea8a1288a49b6222" - "b59fcbe6249f94e5927f9f4b884b0b040a534b3ba040000d045d5d021036830e697b0" - "ee89866da798a8945bd85b352545ec1bcace7e04909ea54c134f16d5fe4e972b7acd2" - "9ebfc2b7b11c26974b84e5f21a45bbe8372472f59e5dfdea7e9e5857c6aebe5dbc5e6" - "46dfbf4e7cee380afaddb15d06153bf1755b9ef00a616d4c8c3c3a662b5eddc192656" - "4a488e3e68e334291078001480f7fa5144ef3a606a41e85c0218dd377090000e41099" - "912102ebfcea8e1864c1273c41e0d7c1e9097be5c491bbbf5fe31161d8e5589b9d6b5" - "b12f3b963c7fc7614d56d83af907e5cb18ac2f4c3e70a8c4253995f6bc002ec5e3504" - "91c965cba4dbc11c210979217f1ac3ece7a748f5b2fcf5cced40a5d4c40e2321023be" - "efdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac", - ProofId::fromHex("db89a819a2825821ac7398eaf0d1ef66bbd35bdc6ce46221439f" - "5fdf5f1fe8a4"), + "872379ab64f55b4166ca0e79639999ec21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde3026d4c8c3c3a662b5eddc1926564a488e3e68e" + "334291078001480f7fa5144ef3a606a41e85c0218dd377090000e41099912102ebfce" + "a8e1864c1273c41e0d7c1e9097be5c491bbbf5fe31161d8e5589b9d6b5b12f3b963c7" + "fc7614d56d83af907e5cb18ac2f4c3e70a8c4253995f6bc002ec5e350491c965cba4d" + "bc11c210979217f1ac3ece7a748f5b2fcf5cced40a5d4c40efabf3ad5b875840e7813" + "a66d5ea8a1288a49b6222b59fcbe6249f94e5927f9f4b884b0b040a534b3ba040000d" + "045d5d021036830e697b0ee89866da798a8945bd85b352545ec1bcace7e04909ea54c" + "134f16d5fe4e972b7acd29ebfc2b7b11c26974b84e5f21a45bbe8372472f59e5dfdea" + "7e9e5857c6aebe5dbc5e646dfbf4e7cee380afaddb15d06153bf1755b9ef00a612321" + "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac0" + "ad0b8d5ee4090105105adc8482fd4a3058461b003eca0b719222e10fec9c8a32fd687" + "7568012e62112e44f68ab931f3c42cffdab5eebf9aa58bc086590a243e", + ProofId::fromHex("279135e3a846a175655e3adb8a5c0ec759e0ff6665df508bde16" + "07e84d4669af"), 15610172, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"3 utxo staked", - "525e2aa04af0e2457c66ac9e7f66257f210252db8e3ceea6fca44a7696e82f7b77e5a" - "4025e60ac60271b174e91ffbb6ce01f039ce8d3b77938e49ce3bc9824e90b72c65542" - "2fb502f137e03a4499e5223d10096fe541eb80316ce3c80800000285f59341044fd7e" - "95de7c7bb30e7f60434a3e1a414a9e5d9c383c7b27396b1b84355a32e2996ecb98dc2" - "0143089932fa1b905a60fc3cfefeea193c91d1405f7c03de494fa4de065c067d64606" - "0e9270281c316d5c4c01d7e43d009151a72bf647794ce1727cbefaeb19719f916cd4d" - "d176c376a4da72431b61736d4a3e01c25ba057eac0af8f2988b78d1b75e02281fac56" - "2357a06353bf7f214c883e65add05b3a616300cb99cc963c0f4ded8c00e0000b03aab" - "f82103172b4f1890594508ab1e0cc5e9728b8a249660da4df724762a8fd888e8ece1b" - "d6fe923ed17ad0fd77a90d31e3877de1a8cdb4e95bcf2cdd6fb9768f86789f253b432" - "f3b5058b2d1892e90882529055fdedf8ae5d3280b2404a65321cf7f7229202db300ff" - "2897e33259a81dfc4bf296c3a156dc8dbfa074c602dd2250cc531b346fc28bb80ddf2" - "9ddc020000a713a5bb21035615635d449988a4eea03fd317e44481bde2e34a2489f3f" - "b24f0b0ea1cbfc4030bec095a8d3e9c2a233778535dc1fcc07755149b23ea8c17931a" - "37e9377eaa2f45bafb8d0bb9ba1700aab88fd6a53ea3e83d95ad2d84e7abe828f5570" - "91b185e2321023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd68" - "3797dde3ac", - ProofId::fromHex("416a77d2cb523d0c4cabb4358fca997ceefc3f8260c9e4970013" - "f5eb99389387"), + "525e2aa04af0e2457c66ac9e7f66257f21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30302db300ff2897e33259a81dfc4bf296c3a15" + "6dc8dbfa074c602dd2250cc531b346fc28bb80ddf29ddc020000a713a5bb210356156" + "35d449988a4eea03fd317e44481bde2e34a2489f3fb24f0b0ea1cbfc4030bec095a8d" + "3e9c2a233778535dc1fcc07755149b23ea8c17931a37e9377eaa2f45bafb8d0bb9ba1" + "700aab88fd6a53ea3e83d95ad2d84e7abe828f557091b185e9ce8d3b77938e49ce3bc" + "9824e90b72c655422fb502f137e03a4499e5223d10096fe541eb80316ce3c80800000" + "285f59341044fd7e95de7c7bb30e7f60434a3e1a414a9e5d9c383c7b27396b1b84355" + "a32e2996ecb98dc20143089932fa1b905a60fc3cfefeea193c91d1405f7c03de494fa" + "4de065c067d646060e9270281c316d5c4c01d7e43d009151a72bf647794ce1727cbef" + "aeb19719f916cd4dd176c376a4da72431b61736d4a3e01c25ba057eac0af8f2988b78" + "d1b75e02281fac562357a06353bf7f214c883e65add05b3a616300cb99cc963c0f4de" + "d8c00e0000b03aabf82103172b4f1890594508ab1e0cc5e9728b8a249660da4df7247" + "62a8fd888e8ece1bd6fe923ed17ad0fd77a90d31e3877de1a8cdb4e95bcf2cdd6fb97" + "68f86789f253b432f3b5058b2d1892e90882529055fdedf8ae5d3280b2404a65321cf" + "7f722922321023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd68" + "3797dde3ac3fbfe299d7ff1c1a6126cee6f39cd4db0fcecd84a2f6c3106473d8db939" + "895fdbc3ce9e8bca9a4b08930692e1f040c0b469d8f7ecaba044cbdd4e12b1afa8d3" + "4", + ProofId::fromHex("e9c29bd9b19b9cda0276e622cf6a99a138bdf03d52b9d204d6ca" + "1cbb0a833446"), 29026903, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"4 utxo staked", - "eef33172651f752ac255c85a4e1374992102c12b37ff6139157865fc4c3a9d7ad999b" - "686ade45d453545d04e76f6e14793b404295de5ebf9fbbbb65fc1d9a71587c5284cff" - "b2e834addefe090b8200435668c8f02c0b0100689a117e0e000007d801582102a682d" - "9d12d53b0eb37a3af2838510f079041905a75f82b6a3fb5558728d781fbf868d1d968" - "27b273f5a79f84ebe23add967a98f472fb80323439d0a65d546fc3745806f6d7f3381" - "24a7a2573864e97a26246644a7d7b05d97943dfcdb4b694df631e6dc5f87e28c1fe3e" - "5ba021f38c471638769041db81ffcf8c9887d078419f97fe2a2c408fee822c0600001" - "689b9cd2102e38d0adddcd7c88e3c87b8babcae10647e2862fb719839fc8890e42aeb" - "929b85e1a3f14e2cdc65e2b1396f2dae41b047958cdc7e4d2f6fa051065829e26797c" - "5b882e45bb9fea32c0b0e0ad90f8ac1e5d8d0b16a9b74d77614b7fd99e56b6091aca3" - "67f8f7a68d1b654e51dd00733bd191dc9bea2ba750e063b05d962aaf9c4d2088ce4f0" - "03e73e253040000a5eebe222103a20dd85b66b44b22fdd17a93762194c9bedb442c7f" - "fd7f08a9f82c42a8c1d9a0443f700cb8a40c8cf7f840b5137b6d019efed961771d095" - "88b0eb3c5e1672bb95b06ca7e2068e564001aa75b8c37bb6601117c286b6b0c9728d1" - "e928ab02e3b67e9422b484ef2624ce5de974b5bd616874ec39d03d32ed0bf114759b7" - "0bf5dcef51534b100515301140f0000950121754104d66dba1569164a134111961133" - "4bad5e2d398823f1454ceecb9c4266fd3ba4b969ac4d4f6c4b3975d19c2f7dcbbca09" - "6af5395780a2d3c42505146c095bc861fab15238fb8aa1fb82c7ad28b0ee5d1335348" - "76dc7887490c7c6e61103b2cd221f1991826a73fecf08e0b5a0a7d357a5431eee032d" - "14a348c80ca1833d68b3d7b2321023beefdde700a6bc02036335b4df141c8bc67bb05" - "a971f5ac2745fd683797dde3ac", - ProofId::fromHex("a38875f52a24a2eed4afb02b1083885eb3a423af03901dd67005" - "f0535cf5b2b6"), + "eef33172651f752ac255c85a4e13749921023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde304631e6dc5f87e28c1fe3e5ba021f38c471638" + "769041db81ffcf8c9887d078419f97fe2a2c408fee822c0600001689b9cd2102e38d0" + "adddcd7c88e3c87b8babcae10647e2862fb719839fc8890e42aeb929b85e1a3f14e2c" + "dc65e2b1396f2dae41b047958cdc7e4d2f6fa051065829e26797c5b882e45bb9fea32" + "c0b0e0ad90f8ac1e5d8d0b16a9b74d77614b7fd99e56b6091295de5ebf9fbbbb65fc1" + "d9a71587c5284cffb2e834addefe090b8200435668c8f02c0b0100689a117e0e00000" + "7d801582102a682d9d12d53b0eb37a3af2838510f079041905a75f82b6a3fb5558728" + "d781fbf868d1d96827b273f5a79f84ebe23add967a98f472fb80323439d0a65d546fc" + "3745806f6d7f338124a7a2573864e97a26246644a7d7b05d97943dfcdb4b694df7e94" + "22b484ef2624ce5de974b5bd616874ec39d03d32ed0bf114759b70bf5dcef51534b10" + "0515301140f0000950121754104d66dba1569164a1341119611334bad5e2d398823f1" + "454ceecb9c4266fd3ba4b969ac4d4f6c4b3975d19c2f7dcbbca096af5395780a2d3c4" + "2505146c095bc861fab15238fb8aa1fb82c7ad28b0ee5d133534876dc7887490c7c6e" + "61103b2cd221f1991826a73fecf08e0b5a0a7d357a5431eee032d14a348c80ca1833d" + "68b3d7baca367f8f7a68d1b654e51dd00733bd191dc9bea2ba750e063b05d962aaf9c" + "4d2088ce4f003e73e253040000a5eebe222103a20dd85b66b44b22fdd17a93762194c" + "9bedb442c7ffd7f08a9f82c42a8c1d9a0443f700cb8a40c8cf7f840b5137b6d019efe" + "d961771d09588b0eb3c5e1672bb95b06ca7e2068e564001aa75b8c37bb6601117c286" + "b6b0c9728d1e928ab02e3b62321023beefdde700a6bc02036335b4df141c8bc67bb05" + "a971f5ac2745fd683797dde3ac8f92b002d2331d05876e9abf23bf4667b8a26f10305" + "551e84a2967d7006db138c650250c61dca16a9bd55a507515c32f9581bfa1e0094c9b" + "dad27c6a0b0748da", + ProofId::fromHex("635353653b3d8cd46769ae3a4dc15d6699d57adf6c1e03e0f9a0" + "bc97fad7d8af"), 44059793, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Properly signed 1 UTXO proof", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("e56c3b2741840f6651b6a097967bc2957a821419c4880b8b8761" - "f6cea68dcaa4"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac05a9ea3a5333926249331f" + "34a41a3519bab179ce9228dc940019ee80f754da0499379229f9b49f1bccc6566a734" + "7227299f775939444505952f920ccea8b9f18", + ProofId::fromHex("cdcdd71605139f49d4884b0c3d9a6be309f07b008a760bb3b25f" + "cfcb7a3ffc46"), 444638638, ProofValidationResult::NONE}, {"Duplicated UTXO", - "c964aa6fde575e4ce8404581c7be874e21038439233261789dd340bdc1450172d9c67" - "1b72ee8c0b2736ed2a3a250760897fd02d1e26c2287948bc6ab2b55945c591b8ba3ff" + "c964aa6fde575e4ce8404581c7be874e21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde302d1e26c2287948bc6ab2b55945c591b8ba3ff" "a237f5d9164d30a4f10145a61f788e639b1480731e2aead30500bf8462872102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805626201aea" - "955e0c65a31347a21e56ad88f1211100629d6691cd43778cb743bfeb005bf4f68fa71" - "acfbd088abdd073d9df93c72f66f94de22db60bd7ca9cfdc2d1e26c2287948bc6ab2b" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680dc890b4228" + "426070d7160d83dcc812cac6543c8b7063626925ee2593875a827d676f4c12204fdc2" + "c15dc270bbe43bd78814b875b09d33ba7cfdbeefd561d5575d1e26c2287948bc6ab2b" "55945c591b8ba3ffa237f5d9164d30a4f10145a61f788e639b1480731e2aead30500b" "f8462872102449fb5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8" - "bce6805626201aea955e0c65a31347a21e56ad88f1211100629d6691cd43778cb743b" - "feb005bf4f68fa71acfbd088abdd073d9df93c72f66f94de22db60bd7ca9cfdc22321" - "038439233261789dd340bdc1450172d9c671b72ee8c0b2736ed2a3a250760897fdac", - ProofId::fromHex("224a8182167af49dec2a68e3b2087e0b0d4d2d949a192c4ceeee" - "d81383bbf9b1"), + "bce680d472b8e629503ae2feb9ec7a9aec126d65ba142d37d5d4a2be316e40b56a083" + "da1b576c77b54d6b42409ac452fe13cfc2f81437e3ac25a55847c1413204ed6ab2321" + "038439233261789dd340bdc1450172d9c671b72ee8c0b2736ed2a3a250760897fdac3" + "dfb66133d94674a3a6565d8f84e1a31e2f79a4bb399c04adc802abcf8b395f62315d3" + "ad8450ba57e11dfb61b1f5a7325094d5ffda1f5830e0990dcc2ebb9be8", + ProofId::fromHex("5d4919b43a1afb6acdeddaf1678397eaa10562125db6b911ec4e" + "35fd8598ad73"), 3280755132, ProofValidationResult::DUPLICATE_STAKE}, {"Properly signed 3 UTXO proof", - "c964aa6fde575e4ce8404581c7be874e21038439233261789dd340bdc1450172d9c67" - "1b72ee8c0b2736ed2a3a250760897fd030b1e5f35704cb63360aa3d5f444ee35eea4c" + "c964aa6fde575e4ce8404581c7be874e21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde3030b1e5f35704cb63360aa3d5f444ee35eea4c" "154c1af6d4e7595b409ada4b42377764698a915c2ac4000000000f28db322102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c4f407b5c2" - "1a05495c35c88aeaead14325762832ee3fafcb7ae70d86e72f08016f2a376a1633367" - "0279410fde74cf25de3d6ff1c176876c628ba72ef40cf9559e4ed76e1f19b2c2a0fcc" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c16daa24ab" + "a0dc1ac10f2aee16684fef73b678a0d67de2e728f93335c05c44e38d5bf3215518e9d" + "a4388df536b857a1b612e93e3d1d5f63223f2557e426d6108e4ed76e1f19b2c2a0fcc" "069b4ace4a078cb5cc31e9e19b266d0af41ea8bb0c30c8b47c95a856d9aa000000007" "dfdd89a2102449fb5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8" - "bce68094b7b69a538ae23e46fa502845a544f71c97ee031e76860cbf3d6a6a050c4f8" - "c348f613cd7ee9c99fbc696c4a28ff8268ca5c727914368cb9dc54bd0c030cc2fac09" + "bce680cdf42ddcd919dee4a61315ca77d11b90e10ffa7faa82c32fbea4ee001467a50" + "ad9e028be879649050e6a231e58b90bef96e0cd3b9cba4c6126d09aed08011a99ac09" "8c86414715db364a4e32216084c561acdd79e0860b1fdf7497b159cb1323045120029" "6c902ee000000009f2bc7392102449fb5237efe8f647d32e8b64f06c22d1d40368eac" - "a2a71ffc6a13ecc8bce6805578592b8769928dc65d4c03c6e0d8bfdcedb20db248f41" - "903f0cefc42f419bbd8bc3dfae34a87aea8f04bdeed5c2821c7dfe74daede72115fd1" - "34d307f5ca482321038439233261789dd340bdc1450172d9c671b72ee8c0b2736ed2a" - "3a250760897fdac", - ProofId::fromHex("8f84c711d35647c0fbc3dd8404e3df708dc1433cb3c9b9a37cd7" - "4516272b5eae"), + "a2a71ffc6a13ecc8bce6800de5a7a32f70eff027099827baeaf2666d2adbc5a97ceec" + "988362ed16ff1eb35ab838f44b5a8d61391a8921e2d63d03d8e03832ec28265b90d44" + "930e6409c2372321038439233261789dd340bdc1450172d9c671b72ee8c0b2736ed2a" + "3a250760897fdace7662689aa1c9c5d9d9a6dbe9a94859be27fbddca080abff31012a" + "5277bc98630c47bb04830514ac04304d726b598e05c4cd89506bb2e1f0a78f54ab3f3" + "15cfe", + ProofId::fromHex("95c9673bc14f3c36e9310297e8df81867b42dd1a7bb7944aeb6c" + "1797fbd2a6d5"), 10150, ProofValidationResult::NONE}, {"Changing sequence affect ProofId", - "d87587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("e01951db33e12d73420a39bc591b52c8473f3f2d01abca168605" - "32bc45842f31"), + "d87587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac80bdeb2ada22b35856fa25" + "d2fe7a145b4ce09c6332b72925dbf2b09140d6163863437a8076f7836fcbb7154b831" + "65a65910d1b2a8c3655d111f008a57315f5a0", + ProofId::fromHex("8b0640e7bf81f487d90d6b5c3ead4bc41eae418da4e6874618b2" + "89124e52ba1e"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing expiration affect ProofId", - "d97587e6c882615797011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("5dfe3d2e2c320af3c1682190b409065b2378404a0a849f555180" - "3120aaa068be"), - 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, - {"Changing the master key affect ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469aa5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("3c4fe89fe0c83945673c244f27fe1bb93ee12d805aefca540bf4" - "9a019b4d720e"), + "d97587e6c882615797011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac5995555107107e656abd8e" + "2852f311ff0f5c4f606695b63ec44e04303e3378a2e21e16bf05727240ebee1334d2f" + "858c6c2e3bdd8d289400b99d7f70b35f9d2fa", + ProofId::fromHex("26ce40e7b5dfc8d3d48d743ed23fa6ff32ca269a59c4fb101b3b" + "48e5d8450465"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing the TxId affect the ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90179a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("807fcb2fa9237f4a12568607f49a3e43c5fbb0d928b02bd7e755" - "eef4cbb57c55"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30179a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9acaefee33b8b7a0ce4d5d1ab" + "92ea8d08dd2538102a4dde790f6317558ceb68e5d2267aac97a0f313dccec827d0401" + "a3095b4e862068077ce942380b474c30b64e0", + ProofId::fromHex("4b57e163adc5174820ce21eb0e0e9d6565bc00d51bf9f86c58c5" + "6947428c2d84"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing the outpoint index change the ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91df00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("58911752138fca20b4f2f769500f28194d91537f0a3dd93b379e" - "d7004dc74248"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91df00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9acecc6e78166848efad9772b" + "a11ed0a8b1e9e844cbc2727c69c5e1898430548c9062a52ca9dc1dbe614213d9f7d54" + "65dc297d0dc1880adb7daf088f6927a4d6a51", + ProofId::fromHex("b569969b77b683904a89c3364c667ac434602936548c80352a85" + "ffed4c934cbc"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing the amount changes the ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21814712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("98776da815348afcf792f4a8086e289496b3c88ac23bfa8cac00" - "d2709410b725"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21814712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9acefbdde03c4cc7065075d06" + "6c693086c0df0b6b349ec9300ff1333cca65d076364560fb2cbb1365240cdd6c9c323" + "d73fc17576da71a5c336a170f76a1b52ffc89", + ProofId::fromHex("6989ce300064196c177eae6fd73cf3f89719ddedf068e757eb39" + "eb2030baa846"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing the height changes the ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010028e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("59bcb33e15d5327a760f463305ebf169a6d2a44d77c83eb49c1f" - "5c681ce192b3"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010028e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac4fc8c51b5a993c0a8f3a53" + "c88fb49f228305da66d20b8c73e7e9de55300ac1de52c898fa73e8c5f54a727edc4a6" + "76a66dc8bb89bd6c54d41053edceaead6d7b1", + ProofId::fromHex("81d217bbfa019439ab6dfbe02b8b703b93eb26e6047a7ee3cc4a" + "ba1366286d8d"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing the pubkey changes the ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102459fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("e366eb24db0b9794f07942f12947163e65d8e4cca01cca2c3626" - "bd2f21f7a0ca"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102459fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9043410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac893ad17cf6a17016f35337" + "f6a10f85357689be2760734137c51225cbe0eca4fa00b671f50deacfb86afd61d9cdf" + "ae24aa1e9ced62954c4f8eb8114bb4fb852fe", + ProofId::fromHex("e33e02f3d608b4a6447c3b3ee283763718716fff02f3a79e3251" + "417bd03b9834"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"Changing the signature does NOT change the ProofId", - "d97587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3543410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("e56c3b2741840f6651b6a097967bc2957a821419c4880b8b8761" - "f6cea68dcaa4"), + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68058fcbabc48" + "e5bb340de0b4710a2af8dd98c997c1b021bf965299036c603ffc89d24efe5ced542b0" + "a6bab3b9432da42775d293a438d0feb2bdda9f2d2463a9c9143410469ab5a892ffa4b" + "b104a3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf8" + "3f30e8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac3359ba425e0084157ca510" + "e30865693578e3f5eb426d97597ccbd7766db411abaf653aea59c34861cbafeaee076" + "8ae58fa2b68a7bfdcdbdc041c50ea59cf1b22", + ProofId::fromHex("cdcdd71605139f49d4884b0c3d9a6be309f07b008a760bb3b25f" + "cfcb7a3ffc46"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, {"1 utxo staked but zero coins", "a6d6852ffa70b172d37a0ad2c01c2acd21023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30145a4d07798547464daa53acefb7c97c0c415" "ed8e81e549ff56a0ef6f847fcc9ca855b3620000000000000000e707d7272102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68065cd42e0e6" - "9d511ad24ecb3c3af07176bcf890caa7cfc64039dc65e51014dd99d11bd00ffbfbcc1" - "9619ca502bfd4dd6dbc0967692ff6d2211b0bd9b9f05e12982321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802967fe411e" + "8608e794b21fcf5e8f54583721249501a58d210b6011128736b135390a9016b241eb1" + "da322af3fe62b085e6a0a6c4735fad85e6dbc66c8ef7d95bf2321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac6ad76de70caa0fb07" + "12a44e24f791244f733017920ef42c876220a9c50f0239d97414829fe9103741aba28" + "7579d8ea26ca28162e3091d53cc51fd58be9b18d22", ProofId::fromHex("c95e3c6417a799dd3085af689ea12fb3d2e1130870fef9f0bdc6" "d10a27df746a"), 0, ProofValidationResult::DUST_THRESOLD}, @@ -575,10 +588,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680baa8704cc7" - "97482ae7b673f04fec50be1cdcefdffc3863029352aef07b16336d57a6036c0c62782" - "780fb12051839ac46328040bffe675bfbcdd15f5f6a5acbda2321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" "74aa4ae7db6d"), 444638638, ProofValidationResult::NONE}, @@ -586,10 +601,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802ddcceb12b" - "f6fa6f3b5001e0c7a60dd79ae373bb83d52630a11691b62a9c32e43a3003f6c13ca22" - "8e33add06fafba4c76ce91bab15171b0c53aef732e824f78b1976a914f8172c51efbf" - "34413a308a030fd4b164c5bfcd8f88ac", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68095189fd41e" + "e3a637f27ae84b45b0c15ba43e674be4692ec91546941295c5d35c101bf657902bc6a" + "2f64f70bb431f3c9e8d20f0c4081963ca63117df9f471b8991976a914f8172c51efbf" + "34413a308a030fd4b164c5bfcd8f88ac2d805b078f5efe022304f8c6ccd0ef5255d80" + "6a473fc85a5ad1caf1aa94a4e49ef7625b9dc85d263b2829d5822af62226bc50a4a83" + "76a3a6e1cd0a37ea2fbbf9", ProofId::fromHex("8a2fcc5700a89f37a3726cdf3202353bf61f280815a9df744e3c" "9de6215a745a"), 444638638, ProofValidationResult::NONE}, @@ -597,10 +614,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680091c7780f8" - "981eb8edbdf98aae9a9072cb2f0af1a87b426c734e79e32704b02878086b5e933ba5d" - "3fc6948ab24b14669e1f670ff0ac2965cce03dcd315e9322a17a914da1745e9b549bd" - "0bfa1a569971c77eba30cd5a4b87", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c2e8203530" + "d213ceef91536cb6167a0cfe4deb9561b938ee54791d51692ef665d87eb23b7f7ddc3" + "6b2d7914ca592bf58f9295ed41015061463315a8ac3bb192b17a914da1745e9b549bd" + "0bfa1a569971c77eba30cd5a4b87fea0a245528a4aadfc1dd5731c0cfe738e276c938" + "15c69789fe97b15a5fb5b4f75b598ed94096205561e8d16203b8ef21763891d8e79a5" + "9862bccbbd5bdf3a58", ProofId::fromHex("c61ee0416eb9549ea0e09dfd2c6062a11aa5d3ab0adcdf59abcc" "02dd0de401fc"), 444638638, ProofValidationResult::NONE}, @@ -608,10 +627,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680e669fa3d48" - "1cce63ddf4dd4f1bc486f7294f4d3fa06bf3e03185423d614aeba8b8577aaca91b0d6" - "212a335e4977523c54d701db772ac5a16b352efc085fb0741255121023beefdde700a" - "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde351ae", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c5eb5fdf05" + "84d9a6e938d41034daf43d6bac05a9d6132ba0711193279e5f5494cb9d59920bdbd96" + "858162c7226ddfc565dbb3a2e4609a148e67770f09a968582255121023beefdde700a" + "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde351ae29eaecb058c9b" + "b74eef68dbeaa5da8b96aacc00bc89c911095ad016cfbdc53b1eeb10a9f29d6c48a5f" + "b3a1e6e30d332a05bdc67062f94acffbe6d6c909bb5643", ProofId::fromHex("29deedc94713bbc4d4f88fe96fae6801b91c5ae50601f158fa76" "a036e18ea468"), 444638638, ProofValidationResult::NONE}, @@ -619,12 +640,14 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6808d8b48717e" - "f23eafb7254c8bdb79cec84b259d023f973c6a086fb6c369671c97c93d2a22c698d17" - "5b4c37c30f5b681a6b019106dd1fab54dc6212e8eb12c500f695221023beefdde700a" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68072fb150ce9" + "813a3fe876bac7e2f4806a0f1efdadcfb1970c009a29af212cca0a43555eb1e0e0863" + "a2361244ad282cc9568d1691a582513d9793c0432cb78339e695221023beefdde700a" "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6" "bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde353ae", + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde353ae34814734c1bd2c4" + "76fdae6fb1145530c3244878f3c2e0c2e5c05da14f17456aedee6beb80f68f42248fd" + "89042346be54beaef7da8e549d7d5ff07f9a2cc63c83", ProofId::fromHex("c24dc13d98d0e0a80c19346b9590368557a66f0f65c0088c179d" "89eca25107c8"), 444638638, ProofValidationResult::NONE}, @@ -632,10 +655,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a89393513c" - "b33ef4c1941f19e25e5cc9d75f648e89b91b748598d9966de35a0781c4e0409765bdf" - "896f53f8430b7150077e1952c118d374bdfaab1c37713cdb01b6a19492077616e7420" - "746f206275726e206d792072657761726473", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c48602d78d" + "8ee81361082417c97d94c54648adc9ef7f9047df5d03546ad6a13c6e81a15a4888130" + "161ae29239a2c4d66df72e4bb73036781d96fab810a39a1d71b6a19492077616e7420" + "746f206275726e206d792072657761726473f42ae2e5fa253a700e5dcb3970a894db4" + "48b61960b45c84723bf769d4dab0370994d0163e235b688da2fabc8e5b57e24805dce" + "3baa62e064c32266a723c6adb6", ProofId::fromHex("bfc250ca1986177acc779f26eaff80aa8916d23cb3e7e0ce6d35" "89c4f5ea364c"), 444638638, ProofValidationResult::NONE}, @@ -643,9 +668,11 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680176d115007" - "f81be4be87ae2883fda15d87a7991645f00c8acf79b7f31501ee823604df88d29acfb" - "4d911c02294d5157191ebcf6657926764757da69dad2897540100", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805337be85cb" + "44712c830d4fbecb59e89e19f6f77fa3b7cc17e8124e76ebd7626b9ba27d641ec97af" + "9b66bc6b73031e14db10a6e1adae74bf2cdb683eb99475ba50100b71f0e77b4ad5d73" + "d5a872ab43699309b5c194f72be5ee0812236c1a46a5b2c22ddd71d909cf52143f487" + "54a61dfe0c6566342fa50b7d62c40fb44d1ff5abed3", ProofId::fromHex("046e75fa2d7f0868dcfa683bbdf657fc6a49b8f8b0d5c2dfdf90" "736ded26b076"), 444638638, ProofValidationResult::INVALID_PAYOUT_SCRIPT}, @@ -653,27 +680,163 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a90f09c643" - "edc82a5babbd25c446fe22df502eba5c9eff4dee2c471fb8c9cc8e5142d71583ac970" - "d5dc717f5cd4969a1089f9b74ac558afe94398022422fce0cad5121023beefdde700a" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805cada44f47" + "acd1bc0d679f2448f03b56fdf20170add0c44b1cdcb7cc47d388269cdb7d452c0a9b4" + "06ea6de32e6a672ad125c8b54d0511768aa60b0212fbce1b2ad5121023beefdde700a" "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6" "bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6b" "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6bc" "02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6bc0" - "2036335b4df141c8bc67bb05a971f5ac2745fd683797dde355ae", + "2036335b4df141c8bc67bb05a971f5ac2745fd683797dde355ae005dfe80b01bc99f9" + "3ae1d1c2d7176f7ea54a7f7c76b6eabb1aec5d31de170b0690282f624d01070fb2700" + "18694aea6a73ac5b7a96e30ed69df9b7684298b986", ProofId::fromHex("e66b0ab11de5e2f358d2e1f65b1ebe608e4a1f10a9f5d42f1173" "b262e1a218a6"), 444638638, ProofValidationResult::INVALID_PAYOUT_SCRIPT}, - {"Changing the payout address changes the ProofId (P2PK)", + {"Changing the payout address changes the proof signature (P2PK)", "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680baa8704cc7" - "97482ae7b673f04fec50be1cdcefdffc3863029352aef07b16336d57a6036c0c62782" - "780fb12051839ac46328040bffe675bfbcdd15f5f6a5acbda2321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde4ac", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde4ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", ProofId::fromHex("ce2812a1decdef0267e0266c68ab53c5ecad292f7b7d0fbd3db9" "285a08ccd2a1"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + // The following tests are based on the valid 1 UTXO proof (P2PK script) + {"Changing the sequence changes the proof signature", + "da7587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("37a08e004f35d6410b24a5724b8351b41d4e3ac04f285cd76d73" + "a023b2ae5519"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the expiration time changes the proof signature", + "d97587e6c882615797011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("1312eff53594f63e61f044c36b2cf2d3e7e44c706f17bfabcf49" + "954741380bbc"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the master pubkey does NOT change the proof signature (but " + "signature verification obviously fails)", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde40169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("de837b44ae2df5408f89dc42039ae53a61ea508a15e214e69a50" + "d940b72e7713"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the TxId changes the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde3016aa79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("2c90b8359740d675952b570cca76ffb7c1a225984b8c7f47bc27" + "607c58a613b5"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the outpoint index changes the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91df00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("289c082f835c2edd24b95e1aee7dbb353dff30cdcaab02d5dc2a" + "c44c57181468"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the amount changes the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21814712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("8d97d3ed1884462122976da4706778593fc4b5eaafb859bec0b4" + "5f590219f5ba"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the height changes the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf2180471280659401003ae168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("690cb3d74b5add1cfb7d4cf186426d41117586c57d59da330cc9" + "50e2d18d613c"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the coinbase flag changes the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010039e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("f713dec5d2f798360748914face171d5a45706b9c5f0bc4d561f" + "6e80e098beef"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the stake pubkey changes the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6812249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("df84548b3a085e29d58ba5e83ad2fd1c9ecbe8595d4240f3f588" + "e52af84cc65b"), + 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, + {"Changing the stake signature does NOT change the proof signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029282321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", + ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" + "74aa4ae7db6d"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, }; diff --git a/src/avalanche/test/util.cpp b/src/avalanche/test/util.cpp --- a/src/avalanche/test/util.cpp +++ b/src/avalanche/test/util.cpp @@ -79,7 +79,7 @@ } return Proof(pb.sequence, pb.expirationTime, pb.masterKey.GetPubKey(), - std::move(signedStakes), pb.payoutScriptPubKey); + std::move(signedStakes), pb.payoutScriptPubKey, SchnorrSig()); } ProofId TestProofBuilder::getDuplicatedStakeProofId(ProofBuilder &pb) { @@ -115,7 +115,7 @@ } return Proof(pb.sequence, pb.expirationTime, pb.masterKey.GetPubKey(), - std::move(signedStakes), pb.payoutScriptPubKey); + std::move(signedStakes), pb.payoutScriptPubKey, SchnorrSig()); } } // namespace avalanche diff --git a/src/avalanche/validation.h b/src/avalanche/validation.h --- a/src/avalanche/validation.h +++ b/src/avalanche/validation.h @@ -18,6 +18,7 @@ INVALID_STAKE_SIGNATURE, TOO_MANY_UTXOS, INVALID_PAYOUT_SCRIPT, + INVALID_PROOF_SIGNATURE, // UTXO based errors. MISSING_UTXO,