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,267 @@ 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68078bbf9169e" + "e43e7bb88a86d13d9932f85b8ebef69bbc5e670a1c22a876074d1799f915bc85a59a7" + "867f8388c45c839797b13000ca82bcb507db6dc8a39a1da542321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3aca3bca4712d49a5647" + "30167acd48e7d3a86aa21e6f6dcf9a9227e6351458a9300be10ed009fbe0b9120e367" + "9dba0983a1c64fb3a540ace8aca1b44e30dd912e91", + ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" + "74aa4ae7db6d"), 444638638, ProofValidationResult::NONE}, {"Duplicated UTXO", - "c964aa6fde575e4ce8404581c7be874e21038439233261789dd340bdc1450172d9c67" - "1b72ee8c0b2736ed2a3a250760897fd02d1e26c2287948bc6ab2b55945c591b8ba3ff" + "c964aa6fde575e4ce8404581c7be874e21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde302d1e26c2287948bc6ab2b55945c591b8ba3ff" "a237f5d9164d30a4f10145a61f788e639b1480731e2aead30500bf8462872102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805626201aea" - "955e0c65a31347a21e56ad88f1211100629d6691cd43778cb743bfeb005bf4f68fa71" - "acfbd088abdd073d9df93c72f66f94de22db60bd7ca9cfdc2d1e26c2287948bc6ab2b" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6801b327731d7" + "7d3af825791d0a4b5bc2119ac0a931657a63f4532c913d2c998e8e312d1d5f400f62c" + "299e88745a420e012f57b4b1812fce0a2a3beb81c61ab3775d1e26c2287948bc6ab2b" "55945c591b8ba3ffa237f5d9164d30a4f10145a61f788e639b1480731e2aead30500b" "f8462872102449fb5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8" - "bce6805626201aea955e0c65a31347a21e56ad88f1211100629d6691cd43778cb743b" - "feb005bf4f68fa71acfbd088abdd073d9df93c72f66f94de22db60bd7ca9cfdc22321" - "038439233261789dd340bdc1450172d9c671b72ee8c0b2736ed2a3a250760897fdac", - ProofId::fromHex("224a8182167af49dec2a68e3b2087e0b0d4d2d949a192c4ceeee" - "d81383bbf9b1"), + "bce680f1cfd2ae6409937fb0914613437bf835297eb7b76c3a5cc3ae270d592122807" + "981a51693bfc1b46cae8b43d2a3ffe2e2df72b2226ec1bed4d06bd7702a0ca9972321" + "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acb" + "f9dc425bc3c50e92863e384e230bb43718f20fa02a32ea0a8040aa9ea5918363e54ed" + "ae7db3523264595405adbe22f382dcef7548e2bdeddd326a7a19c419cb", + ProofId::fromHex("caaa491b2df745b14751378c93fabdb30ecf1a5e92154c50fac3" + "ef180bdb5fb5"), 3280755132, ProofValidationResult::DUPLICATE_STAKE}, {"Properly signed 3 UTXO proof", - "c964aa6fde575e4ce8404581c7be874e21038439233261789dd340bdc1450172d9c67" - "1b72ee8c0b2736ed2a3a250760897fd030b1e5f35704cb63360aa3d5f444ee35eea4c" + "c964aa6fde575e4ce8404581c7be874e21023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde3030b1e5f35704cb63360aa3d5f444ee35eea4c" "154c1af6d4e7595b409ada4b42377764698a915c2ac4000000000f28db322102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c4f407b5c2" - "1a05495c35c88aeaead14325762832ee3fafcb7ae70d86e72f08016f2a376a1633367" - "0279410fde74cf25de3d6ff1c176876c628ba72ef40cf9559e4ed76e1f19b2c2a0fcc" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680e09c78824d" + "21b02d79d9974815afd7b9db8f0e185baebb3fcd121fc2ffef9aed68cdf1ba642e073" + "07022a48ba8e3a8805621160120000b361037b007852bd28ee4ed76e1f19b2c2a0fcc" "069b4ace4a078cb5cc31e9e19b266d0af41ea8bb0c30c8b47c95a856d9aa000000007" "dfdd89a2102449fb5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8" - "bce68094b7b69a538ae23e46fa502845a544f71c97ee031e76860cbf3d6a6a050c4f8" - "c348f613cd7ee9c99fbc696c4a28ff8268ca5c727914368cb9dc54bd0c030cc2fac09" + "bce6807edc903d02dd758d218f2df8f98ae8966478200728c33944da5b44908c15434" + "89d39ab95a3928e097f289e9050eb71a9b9340c1ccecee32f8521ffa9432e08f2ac09" "8c86414715db364a4e32216084c561acdd79e0860b1fdf7497b159cb1323045120029" "6c902ee000000009f2bc7392102449fb5237efe8f647d32e8b64f06c22d1d40368eac" - "a2a71ffc6a13ecc8bce6805578592b8769928dc65d4c03c6e0d8bfdcedb20db248f41" - "903f0cefc42f419bbd8bc3dfae34a87aea8f04bdeed5c2821c7dfe74daede72115fd1" - "34d307f5ca482321038439233261789dd340bdc1450172d9c671b72ee8c0b2736ed2a" - "3a250760897fdac", - ProofId::fromHex("8f84c711d35647c0fbc3dd8404e3df708dc1433cb3c9b9a37cd7" - "4516272b5eae"), + "a2a71ffc6a13ecc8bce680d48dcddcc6a8e698f16e9f1b060d07c87485ab97ed12a81" + "79158f103e3da2b7f528fae7cd061ff791fad145c46962ad2b6b4f301456d8fbdd3aa" + "ba32a133cd7e2321023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac274" + "5fd683797dde3ac53cc794f7c4e0fb808db65c03cb5f5efc89fca545387ee64534975" + "45e6de5d89f9e8d99fb0d74afa307e7ede71a2c8a493e38501839f92cb8a4a445551b" + "79b82", + ProofId::fromHex("46c2a87dea8cdd0e1943386ee6a891dbcfb880a5a0f3425042fd" + "15386b5dff4f"), 10150, ProofValidationResult::NONE}, {"Changing sequence affect ProofId", - "d87587e6c882615796011ec8f9a7b1c6410469ab5a892ffa4bb104a3d5760dd893a55" - "02512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e8d9da978de4027" - "c70ce7e0d3b0ad62eb08edd8f90169a79ff23e1d58c64afad42ad81cffe53967e16be" - "b692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb5237e" - "fe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c07a7dd" - "7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6d6f3e" - "6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f3443410469ab5a892ffa4bb104a" - "3d5760dd893a5502512eea4ba32a6d6672767be4959c0f70489b803a47a3abf83f30e" - "8d9da978de4027c70ce7e0d3b0ad62eb08edd8f9ac", - ProofId::fromHex("e01951db33e12d73420a39bc591b52c8473f3f2d01abca168605" - "32bc45842f31"), + "d87587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acdf2d4b576ea96e31b" + "6442ffc97a86c1981176f99c186e0d49329cdeb4919079a5714cc34f09c37bf7d039c" + "a215b1ae384452fcae88d0fea69b1efbee5ea44925", + ProofId::fromHex("7b313da7a27f2ac6fe189418b4ced6a7921963010cc282128bb7" + "61dc8ccd64e6"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3accf687f1106ba0da94" + "76d4ee574e110e100d1f39dee7c8cf7a1e226aed1b1fcc05e02d83a0e5baff811968a" + "6e7cf324cd761f00d81d483f369a2d974a3fe3cb8e", + ProofId::fromHex("1312eff53594f63e61f044c36b2cf2d3e7e44c706f17bfabcf49" + "954741380bbc"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac20a3c6d9ffd8050bb" + "066e6c8776e243932a71fe4113e17b6e751e3cf20f1d23b92a41d3945ab4911973ee2" + "ede187ae765c73046e0cd094e1fc973fff00e90b1c", + ProofId::fromHex("f3cacf095659d1089303e9abb24572b70fdf0b6e48ea3ef16b27" + "f870263e1317"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac2ed88173e4ef596ea" + "ea215ee7695bab73c1e5c1319d0cd24e97905b79258706aabdc993280eb980347fed8" + "1229eca9de81188e8cce43ae6b0c9a7175b0b6dfda", + ProofId::fromHex("289c082f835c2edd24b95e1aee7dbb353dff30cdcaab02d5dc2a" + "c44c57181468"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3aca7f0e122551b6e588" + "94d8bf358f20ad8139a60a3ad278bdd205188c7f3b020902d7e958f70cb894b7dbbba" + "17bb956186480543c0baf3415d675d100423882c39", + ProofId::fromHex("8d97d3ed1884462122976da4706778593fc4b5eaafb859bec0b4" + "5f590219f5ba"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac6106f2e5977859cb1" + "587a15314e1d98bad9baced997185e1a8c1f4b8259619cfc607f77657d534e924726f" + "40f87c1615e89dcf6364b5e15a8cde66d9e3dd5d75", + ProofId::fromHex("7048ce3c33c7eb26167243d34732db9c56773a82d7242c32acdb" + "df3219b2d4b4"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f342321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ace7bb4497a3d3b680c" + "ea846443543b40da998afcd4d30866f173ca2afcb00cd9e94bceb114f48a407c869fa" + "aac235236813e966050e97f0f42e60f7e585dca32c", + ProofId::fromHex("958f703c17b2045b68fc613d44345f87b41fe4fca02f493c55f4" + "bc83ea897d36"), 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" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a7adc748c0" + "7a7dd7a9f62c0d755bb7dd840a1f658096f178734683b11f2bc193a567146ed5513c6" + "d6f3e6c27a95c1ca4c01110aac03c0f5aa7660f6efb964f352321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac73b59e52401a2db5a" + "f7f6d59ad6641b5db55e923d34da3f63488b4c93a8b5ad72b9ce3662f4b0c4d88ea0d" + "1aa1f42ca7d1edf2b690a7a293bf7cff9ed71ee695", + ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" + "74aa4ae7db6d"), 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 +579,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680baa8704cc7" - "97482ae7b673f04fec50be1cdcefdffc3863029352aef07b16336d57a6036c0c62782" - "780fb12051839ac46328040bffe675bfbcdd15f5f6a5acbda2321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" + "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" + "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" + "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" + "4f5ddf7d9865c7fead7e4a840b947939590261640f", ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" "74aa4ae7db6d"), 444638638, ProofValidationResult::NONE}, @@ -586,10 +592,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802ddcceb12b" - "f6fa6f3b5001e0c7a60dd79ae373bb83d52630a11691b62a9c32e43a3003f6c13ca22" - "8e33add06fafba4c76ce91bab15171b0c53aef732e824f78b1976a914f8172c51efbf" - "34413a308a030fd4b164c5bfcd8f88ac", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68095189fd41e" + "e3a637f27ae84b45b0c15ba43e674be4692ec91546941295c5d35c101bf657902bc6a" + "2f64f70bb431f3c9e8d20f0c4081963ca63117df9f471b8991976a914f8172c51efbf" + "34413a308a030fd4b164c5bfcd8f88ac2d805b078f5efe022304f8c6ccd0ef5255d80" + "6a473fc85a5ad1caf1aa94a4e49ef7625b9dc85d263b2829d5822af62226bc50a4a83" + "76a3a6e1cd0a37ea2fbbf9", ProofId::fromHex("8a2fcc5700a89f37a3726cdf3202353bf61f280815a9df744e3c" "9de6215a745a"), 444638638, ProofValidationResult::NONE}, @@ -597,10 +605,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680091c7780f8" - "981eb8edbdf98aae9a9072cb2f0af1a87b426c734e79e32704b02878086b5e933ba5d" - "3fc6948ab24b14669e1f670ff0ac2965cce03dcd315e9322a17a914da1745e9b549bd" - "0bfa1a569971c77eba30cd5a4b87", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c2e8203530" + "d213ceef91536cb6167a0cfe4deb9561b938ee54791d51692ef665d87eb23b7f7ddc3" + "6b2d7914ca592bf58f9295ed41015061463315a8ac3bb192b17a914da1745e9b549bd" + "0bfa1a569971c77eba30cd5a4b87fea0a245528a4aadfc1dd5731c0cfe738e276c938" + "15c69789fe97b15a5fb5b4f75b598ed94096205561e8d16203b8ef21763891d8e79a5" + "9862bccbbd5bdf3a58", ProofId::fromHex("c61ee0416eb9549ea0e09dfd2c6062a11aa5d3ab0adcdf59abcc" "02dd0de401fc"), 444638638, ProofValidationResult::NONE}, @@ -608,10 +618,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680e669fa3d48" - "1cce63ddf4dd4f1bc486f7294f4d3fa06bf3e03185423d614aeba8b8577aaca91b0d6" - "212a335e4977523c54d701db772ac5a16b352efc085fb0741255121023beefdde700a" - "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde351ae", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c5eb5fdf05" + "84d9a6e938d41034daf43d6bac05a9d6132ba0711193279e5f5494cb9d59920bdbd96" + "858162c7226ddfc565dbb3a2e4609a148e67770f09a968582255121023beefdde700a" + "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde351ae29eaecb058c9b" + "b74eef68dbeaa5da8b96aacc00bc89c911095ad016cfbdc53b1eeb10a9f29d6c48a5f" + "b3a1e6e30d332a05bdc67062f94acffbe6d6c909bb5643", ProofId::fromHex("29deedc94713bbc4d4f88fe96fae6801b91c5ae50601f158fa76" "a036e18ea468"), 444638638, ProofValidationResult::NONE}, @@ -619,12 +631,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 +646,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680a89393513c" - "b33ef4c1941f19e25e5cc9d75f648e89b91b748598d9966de35a0781c4e0409765bdf" - "896f53f8430b7150077e1952c118d374bdfaab1c37713cdb01b6a19492077616e7420" - "746f206275726e206d792072657761726473", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c48602d78d" + "8ee81361082417c97d94c54648adc9ef7f9047df5d03546ad6a13c6e81a15a4888130" + "161ae29239a2c4d66df72e4bb73036781d96fab810a39a1d71b6a19492077616e7420" + "746f206275726e206d792072657761726473f42ae2e5fa253a700e5dcb3970a894db4" + "48b61960b45c84723bf769d4dab0370994d0163e235b688da2fabc8e5b57e24805dce" + "3baa62e064c32266a723c6adb6", ProofId::fromHex("bfc250ca1986177acc779f26eaff80aa8916d23cb3e7e0ce6d35" "89c4f5ea364c"), 444638638, ProofValidationResult::NONE}, @@ -643,9 +659,11 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680176d115007" - "f81be4be87ae2883fda15d87a7991645f00c8acf79b7f31501ee823604df88d29acfb" - "4d911c02294d5157191ebcf6657926764757da69dad2897540100", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805337be85cb" + "44712c830d4fbecb59e89e19f6f77fa3b7cc17e8124e76ebd7626b9ba27d641ec97af" + "9b66bc6b73031e14db10a6e1adae74bf2cdb683eb99475ba50100b71f0e77b4ad5d73" + "d5a872ab43699309b5c194f72be5ee0812236c1a46a5b2c22ddd71d909cf52143f487" + "54a61dfe0c6566342fa50b7d62c40fb44d1ff5abed3", ProofId::fromHex("046e75fa2d7f0868dcfa683bbdf657fc6a49b8f8b0d5c2dfdf90" "736ded26b076"), 444638638, ProofValidationResult::INVALID_PAYOUT_SCRIPT}, @@ -653,27 +671,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,