diff --git a/src/avalanche/proof.h b/src/avalanche/proof.h --- a/src/avalanche/proof.h +++ b/src/avalanche/proof.h @@ -42,6 +42,8 @@ struct StakeCommitment : public uint256 { explicit StakeCommitment() : uint256() {} explicit StakeCommitment(const uint256 &b) : uint256(b) {} + StakeCommitment(const ProofId &proofid, int64_t expirationTime, + const CPubKey &master); }; class Stake { @@ -147,8 +149,8 @@ const ProofId &getId() const { return proofid; } const LimitedProofId &getLimitedId() const { return limitedProofId; } const StakeCommitment getStakeCommitment() const { - return StakeCommitment(proofid); - } + return StakeCommitment(proofid, expirationTime, master); + }; uint32_t getScore() const; bool verify(ProofValidationState &state) const; diff --git a/src/avalanche/proof.cpp b/src/avalanche/proof.cpp --- a/src/avalanche/proof.cpp +++ b/src/avalanche/proof.cpp @@ -18,6 +18,19 @@ namespace avalanche { +StakeCommitment::StakeCommitment(const ProofId &proofid, int64_t expirationTime, + const CPubKey &master) { + if (Proof::useLegacy(gArgs)) { + memcpy(m_data, proofid.data(), sizeof(m_data)); + } else { + CHashWriter ss(SER_GETHASH, 0); + ss << expirationTime; + ss << master; + const uint256 &hash = ss.GetHash(); + memcpy(m_data, hash.data(), sizeof(m_data)); + } +} + void Stake::computeStakeId() { CHashWriter ss(SER_GETHASH, 0); ss << *this; diff --git a/src/avalanche/proofbuilder.cpp b/src/avalanche/proofbuilder.cpp --- a/src/avalanche/proofbuilder.cpp +++ b/src/avalanche/proofbuilder.cpp @@ -40,7 +40,9 @@ } const ProofId proofid = getProofId(); - const StakeCommitment commitment(proofid); + + const CPubKey masterPubKey = masterKey.GetPubKey(); + const StakeCommitment commitment(proofid, expirationTime, masterPubKey); std::vector signedStakes; signedStakes.reserve(stakes.size()); @@ -50,7 +52,7 @@ signedStakes.push_back(handle.value().sign(commitment)); } - return Proof(sequence, expirationTime, masterKey.GetPubKey(), + return Proof(sequence, expirationTime, std::move(masterPubKey), std::move(signedStakes), payoutScriptPubKey, std::move(proofSignature)); } 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 @@ -316,12 +316,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" "74aa4ae7db6d"), 444638638, ProofValidationResult::NONE}, @@ -329,12 +329,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68095189fd41e" - "e3a637f27ae84b45b0c15ba43e674be4692ec91546941295c5d35c101bf657902bc6a" - "2f64f70bb431f3c9e8d20f0c4081963ca63117df9f471b8991976a914f8172c51efbf" - "34413a308a030fd4b164c5bfcd8f88ac2d805b078f5efe022304f8c6ccd0ef5255d80" - "6a473fc85a5ad1caf1aa94a4e49ef7625b9dc85d263b2829d5822af62226bc50a4a83" - "76a3a6e1cd0a37ea2fbbf9", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6804aade70feb" + "9104b097ec25bdd4c5dd56d02b377c30d335267852b85016473ca79470204eb08d8f9" + "6b144ac655e8fd3a8d13fac22ba43b9004c556f5a4b5c6c3a1976a914f8172c51efbf" + "34413a308a030fd4b164c5bfcd8f88ace67287ef0489c2db75aae6647a49f8b0c963b" + "e66c55f97a17a09ea44f25f786664450c8956987f1d2d6027b1cf344adf6db6e50a24" + "47c3295d6a6de4380d431c", ProofId::fromHex("8a2fcc5700a89f37a3726cdf3202353bf61f280815a9df744e3c" "9de6215a745a"), 444638638, ProofValidationResult::NONE}, @@ -342,12 +342,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c2e8203530" - "d213ceef91536cb6167a0cfe4deb9561b938ee54791d51692ef665d87eb23b7f7ddc3" - "6b2d7914ca592bf58f9295ed41015061463315a8ac3bb192b17a914da1745e9b549bd" - "0bfa1a569971c77eba30cd5a4b87fea0a245528a4aadfc1dd5731c0cfe738e276c938" - "15c69789fe97b15a5fb5b4f75b598ed94096205561e8d16203b8ef21763891d8e79a5" - "9862bccbbd5bdf3a58", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6804ec72d5ec3" + "68170b4df3c43fa8ef84fecb76fef0f2b71190d3d850b3acadfafe4950de0b7aab30e" + "7b6ff4eaea9a6d91f2efe0730dc1bf36c893a63f4143f60ae17a914da1745e9b549bd" + "0bfa1a569971c77eba30cd5a4b87a2c47862f50581635bfe210d168f0f06f780ddf5f" + "6d7a87efd0fe43db74293f057290a3b165b17f4022980675456c1b5b057ec87908f8f" + "415c2475d458d14c35", ProofId::fromHex("c61ee0416eb9549ea0e09dfd2c6062a11aa5d3ab0adcdf59abcc" "02dd0de401fc"), 444638638, ProofValidationResult::NONE}, @@ -355,12 +355,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c5eb5fdf05" - "84d9a6e938d41034daf43d6bac05a9d6132ba0711193279e5f5494cb9d59920bdbd96" - "858162c7226ddfc565dbb3a2e4609a148e67770f09a968582255121023beefdde700a" - "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde351ae29eaecb058c9b" - "b74eef68dbeaa5da8b96aacc00bc89c911095ad016cfbdc53b1eeb10a9f29d6c48a5f" - "b3a1e6e30d332a05bdc67062f94acffbe6d6c909bb5643", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680d1365d1ba1" + "6b15fa4e0f43b1dcccf5eb9706908ec9007fcfbb1c509ed317af4943276d3df606891" + "0056d5f49a8bab9c45df1d834ebc496427a7429d3b1e3c4b4255121023beefdde700a" + "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde351aee7f07dd552f0e" + "b0c8e5babc1417e7cd68d7693868a277ec9f53c4ab4a72d91c3696f1a7e638cd29e2e" + "f089a5eb4e25d97a67893825aa9e4bd7e029cee17a0e36", ProofId::fromHex("29deedc94713bbc4d4f88fe96fae6801b91c5ae50601f158fa76" "a036e18ea468"), 444638638, ProofValidationResult::NONE}, @@ -368,14 +368,14 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68072fb150ce9" - "813a3fe876bac7e2f4806a0f1efdadcfb1970c009a29af212cca0a43555eb1e0e0863" - "a2361244ad282cc9568d1691a582513d9793c0432cb78339e695221023beefdde700a" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce68014576021c9" + "9a0e2c201d0786b21627d6c1c04d653f5974ad4de728df3c8655d1b02775f18c47b05" + "5b81a4f31452a97fb90d6a57aa0fa69a04f4c6191b8761761695221023beefdde700a" "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6" "bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde353ae34814734c1bd2c4" - "76fdae6fb1145530c3244878f3c2e0c2e5c05da14f17456aedee6beb80f68f42248fd" - "89042346be54beaef7da8e549d7d5ff07f9a2cc63c83", + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde353aed786ac6c270c58d" + "4376922d0d0a39002fb2b66c75a3479c7e43c3efa726ed812a4baca60cd9a59cc5a0b" + "561bfbee247e16a76bb8d4c685b29f906ab4ec261841", ProofId::fromHex("c24dc13d98d0e0a80c19346b9590368557a66f0f65c0088c179d" "89eca25107c8"), 444638638, ProofValidationResult::NONE}, @@ -383,12 +383,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680c48602d78d" - "8ee81361082417c97d94c54648adc9ef7f9047df5d03546ad6a13c6e81a15a4888130" - "161ae29239a2c4d66df72e4bb73036781d96fab810a39a1d71b6a19492077616e7420" - "746f206275726e206d792072657761726473f42ae2e5fa253a700e5dcb3970a894db4" - "48b61960b45c84723bf769d4dab0370994d0163e235b688da2fabc8e5b57e24805dce" - "3baa62e064c32266a723c6adb6", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680960f094027" + "35381e9520625d24e731a38abd3a1fc8419f0b30784ffa547ec609c2e024b1aecf288" + "3c6390d222ae18859d2a9d440945fd3d388c06ea5c3ff778a1b6a19492077616e7420" + "746f206275726e206d792072657761726473a9a690a263c5718344bc0ef75ae5ebef8" + "ebf53bb7262bfde92b3f8a1fd3b73966a971ffdbdb9c7d1b86c859a5c4bc16c30c690" + "2136f102ba9e2c2a72cc807f01", ProofId::fromHex("bfc250ca1986177acc779f26eaff80aa8916d23cb3e7e0ce6d35" "89c4f5ea364c"), 444638638, ProofValidationResult::NONE}, @@ -396,11 +396,11 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805337be85cb" - "44712c830d4fbecb59e89e19f6f77fa3b7cc17e8124e76ebd7626b9ba27d641ec97af" - "9b66bc6b73031e14db10a6e1adae74bf2cdb683eb99475ba50100b71f0e77b4ad5d73" - "d5a872ab43699309b5c194f72be5ee0812236c1a46a5b2c22ddd71d909cf52143f487" - "54a61dfe0c6566342fa50b7d62c40fb44d1ff5abed3", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce680053334f08e" + "41bb41eed4b53991c70ceba72622422679e62b9bbe18e927e5c85df2fe8a6a77fa164" + "5ace72efe00c210f9edc0ab65d9d2c876308f0b698329660e0100c20fb0f56b7e71d8" + "224b7920684b2c6c7f12299b75f4eb6df657e73b8cc7c91fcd72d5228f2fb07952783" + "14b470238c3d5ce5521f7cce5a6ac268c6c1d61d147", ProofId::fromHex("046e75fa2d7f0868dcfa683bbdf657fc6a49b8f8b0d5c2dfdf90" "736ded26b076"), 444638638, ProofValidationResult::INVALID_PAYOUT_SCRIPT}, @@ -408,29 +408,30 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6805cada44f47" - "acd1bc0d679f2448f03b56fdf20170add0c44b1cdcb7cc47d388269cdb7d452c0a9b4" - "06ea6de32e6a672ad125c8b54d0511768aa60b0212fbce1b2ad5121023beefdde700a" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6808312e624f9" + "555918162702fe2c52d0c9613bf3e897070096d3658d1ac881d7fa70f5c411d420f94" + "5084adaacb05a78cd053bc62558170629dabc8c31fe16db8aad5121023beefdde700a" "6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6" "bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6b" "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6bc" "02036335b4df141c8bc67bb05a971f5ac2745fd683797dde321023beefdde700a6bc0" - "2036335b4df141c8bc67bb05a971f5ac2745fd683797dde355ae005dfe80b01bc99f9" - "3ae1d1c2d7176f7ea54a7f7c76b6eabb1aec5d31de170b0690282f624d01070fb2700" - "18694aea6a73ac5b7a96e30ed69df9b7684298b986", + "2036335b4df141c8bc67bb05a971f5ac2745fd683797dde355aeea72fed89efc9f968" + "7e31e2b91a1445fdd03ff99e374c69901ed94d76605e3342046bcc0d43d499d524c2b" + "f45b2e173a46a66251373a0cf6a2dd2c64b84d7124", ProofId::fromHex("e66b0ab11de5e2f358d2e1f65b1ebe608e4a1f10a9f5d42f1173" "b262e1a218a6"), 444638638, ProofValidationResult::INVALID_PAYOUT_SCRIPT}, - {"Changing the payout address changes the proof signature (P2PK)", + {"Changing the payout address changes the proof signature (P2PK) but " + "not the stake signature", "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde4ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde4acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("ce2812a1decdef0267e0266c68ab53c5ecad292f7b7d0fbd3db9" "285a08ccd2a1"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -439,12 +440,12 @@ "da7587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("37a08e004f35d6410b24a5724b8351b41d4e3ac04f285cd76d73" "a023b2ae5519"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -452,12 +453,12 @@ "d97587e6c882615797011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("1312eff53594f63e61f044c36b2cf2d3e7e44c706f17bfabcf49" "954741380bbc"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -466,12 +467,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde40169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("de837b44ae2df5408f89dc42039ae53a61ea508a15e214e69a50" "d940b72e7713"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -479,12 +480,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde3016aa79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("2c90b8359740d675952b570cca76ffb7c1a225984b8c7f47bc27" "607c58a613b5"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -492,12 +493,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91df00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("289c082f835c2edd24b95e1aee7dbb353dff30cdcaab02d5dc2a" "c44c57181468"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -505,12 +506,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21814712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("8d97d3ed1884462122976da4706778593fc4b5eaafb859bec0b4" "5f590219f5ba"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -518,12 +519,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf2180471280659401003ae168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("690cb3d74b5add1cfb7d4cf186426d41117586c57d59da330cc9" "50e2d18d613c"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -531,12 +532,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010039e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("f713dec5d2f798360748914face171d5a45706b9c5f0bc4d561f" "6e80e098beef"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -544,12 +545,12 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6812249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029272321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6819c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("df84548b3a085e29d58ba5e83ad2fd1c9ecbe8595d4240f3f588" "e52af84cc65b"), 444638638, ProofValidationResult::INVALID_PROOF_SIGNATURE}, @@ -557,15 +558,47 @@ "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" - "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6802249784cdf" - "70222cafa65d71a80d6f588cda6fd7183b67b2e5a9097dd49e3be7ddc24a54ccb393e" - "5c9e51ce3f7e788ff93d19b5954fb61215875a14b34f029282321023beefdde700a6b" - "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ac7b0b7865200f63052" - "ff980b93f965f398dda04917d411dd46e3c009a5fef35661fac28779b6a22760c0000" - "4f5ddf7d9865c7fead7e4a840b947939590261640f", + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d32321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3acd316f25424b7ac7c0" + "79aad3357f3ec897a7e45c9f1a15ea6b6e5bb320294c47194c42262ad26077a0b59d1" + "4c52d4ffb7c4c110813a5b989defd6fe50427f1110", ProofId::fromHex("455f34eb8a00b0799630071c0728481bdb1653035b1484ac33e9" "74aa4ae7db6d"), 444638638, ProofValidationResult::INVALID_STAKE_SIGNATURE}, + {"Changing the sequence and signing the proof again does not involve " + "changing the stake signature", + "da7587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde30169a79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91de00cf21804712806594010038e168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6809c82221364" + "57f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216ca9204456897df541" + "734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321023beefdde700a6b" + "c02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3ace013e8714309a1393" + "80d2a39878e2b12f278ccf3c6f695cbb09cb7c3f447b562e78b5ff568762427c91455" + "704b5c7c2ac5c00714355adc6cb90032d45faceee0", + ProofId::fromHex("37a08e004f35d6410b24a5724b8351b41d4e3ac04f285cd76d73" + "a023b2ae5519"), + 444638638, ProofValidationResult::NONE}, + {"Adding a stake changes the proof signature but does not involve " + "changing the previous stake signature", + "d97587e6c882615796011ec8f9a7b1c621023beefdde700a6bc02036335b4df141c8b" + "c67bb05a971f5ac2745fd683797dde3026aa79ff23e1d58c64afad42ad81cffe53967" + "e16beb692fc5776bb442c79c5d91df00cf2181471280659401003be168a32102449fb" + "5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8bce6803e42dfd78c" + "8df947599a2dd36b0a12b08bf602ec663e95351cf0f164c597ee7933d99c5e997a984" + "70c59d1694c397163111b6b3f4177e09727271e861e53dc6269a79ff23e1d58c64afa" + "d42ad81cffe53967e16beb692fc5776bb442c79c5d91de00cf2180471280659401003" + "8e168a32102449fb5237efe8f647d32e8b64f06c22d1d40368eaca2a71ffc6a13ecc8" + "bce6809c8222136457f3be61a092ec373f02e8b6a4612c36b3f0048730354e347216c" + "a9204456897df541734cdaf49e6676b1e6a18a994ea39f6621bb2a45ddf1e54d22321" + "023beefdde700a6bc02036335b4df141c8bc67bb05a971f5ac2745fd683797dde3aca" + "c42bf61ff1189f7eb45f28625ddc89341507f88e67d88f9cb31264a15d43523badbc1" + "1dab06a24cee2fe1383931e0a3e253c4945516b87f90439f2f6479d46a", + ProofId::fromHex("6f468e98800d6f0b74452ef9d7ff5f08c4e41354e6479bf5aafa" + "a43d68e93275"), + 2 * 444638638, ProofValidationResult::NONE}, }; auto checkCases = [&](const std::vector &testcases) {