mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
refactor: deduplicate anchor witness program bytes (0x4e,0x73
)
Co-authored-by: Gregory Sanders <gsanders87@gmail.com>
This commit is contained in:
parent
41f2f058d0
commit
8284229a28
3 changed files with 11 additions and 10 deletions
|
@ -117,10 +117,13 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Witness program for Pay-to-Anchor output script type */
|
||||||
|
static const std::vector<unsigned char> ANCHOR_BYTES{0x4e, 0x73};
|
||||||
|
|
||||||
struct PayToAnchor : public WitnessUnknown
|
struct PayToAnchor : public WitnessUnknown
|
||||||
{
|
{
|
||||||
PayToAnchor() : WitnessUnknown(1, {0x4e, 0x73}) {
|
PayToAnchor() : WitnessUnknown(1, ANCHOR_BYTES) {
|
||||||
Assume(CScript::IsPayToAnchor(1, {0x4e, 0x73}));
|
Assume(CScript::IsPayToAnchor(1, ANCHOR_BYTES));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include <test/data/bip341_wallet_vectors.json.h>
|
#include <test/data/bip341_wallet_vectors.json.h>
|
||||||
|
|
||||||
|
#include <addresstype.h>
|
||||||
#include <key.h>
|
#include <key.h>
|
||||||
#include <key_io.h>
|
#include <key_io.h>
|
||||||
#include <script/script.h>
|
#include <script/script.h>
|
||||||
|
@ -130,9 +131,8 @@ BOOST_AUTO_TEST_CASE(script_standard_Solver_success)
|
||||||
BOOST_CHECK(solutions[1] == ToByteVector(uint256::ONE));
|
BOOST_CHECK(solutions[1] == ToByteVector(uint256::ONE));
|
||||||
|
|
||||||
// TxoutType::ANCHOR
|
// TxoutType::ANCHOR
|
||||||
std::vector<unsigned char> anchor_bytes{0x4e, 0x73};
|
|
||||||
s.clear();
|
s.clear();
|
||||||
s << OP_1 << anchor_bytes;
|
s << OP_1 << ANCHOR_BYTES;
|
||||||
BOOST_CHECK_EQUAL(Solver(s, solutions), TxoutType::ANCHOR);
|
BOOST_CHECK_EQUAL(Solver(s, solutions), TxoutType::ANCHOR);
|
||||||
BOOST_CHECK(solutions.empty());
|
BOOST_CHECK(solutions.empty());
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ BOOST_AUTO_TEST_CASE(script_standard_Solver_failure)
|
||||||
|
|
||||||
// TxoutType::ANCHOR but wrong witness version
|
// TxoutType::ANCHOR but wrong witness version
|
||||||
s.clear();
|
s.clear();
|
||||||
s << OP_2 << std::vector<unsigned char>{0x4e, 0x73};
|
s << OP_2 << ANCHOR_BYTES;
|
||||||
BOOST_CHECK(!s.IsPayToAnchor());
|
BOOST_CHECK(!s.IsPayToAnchor());
|
||||||
BOOST_CHECK_EQUAL(Solver(s, solutions), TxoutType::WITNESS_UNKNOWN);
|
BOOST_CHECK_EQUAL(Solver(s, solutions), TxoutType::WITNESS_UNKNOWN);
|
||||||
|
|
||||||
|
@ -284,9 +284,8 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestination)
|
||||||
BOOST_CHECK(std::get<WitnessV1Taproot>(address) == WitnessV1Taproot(xpk));
|
BOOST_CHECK(std::get<WitnessV1Taproot>(address) == WitnessV1Taproot(xpk));
|
||||||
|
|
||||||
// TxoutType::ANCHOR
|
// TxoutType::ANCHOR
|
||||||
std::vector<unsigned char> anchor_bytes{0x4e, 0x73};
|
|
||||||
s.clear();
|
s.clear();
|
||||||
s << OP_1 << anchor_bytes;
|
s << OP_1 << ANCHOR_BYTES;
|
||||||
BOOST_CHECK(ExtractDestination(s, address));
|
BOOST_CHECK(ExtractDestination(s, address));
|
||||||
BOOST_CHECK(std::get<PayToAnchor>(address) == PayToAnchor());
|
BOOST_CHECK(std::get<PayToAnchor>(address) == PayToAnchor());
|
||||||
|
|
||||||
|
@ -379,9 +378,8 @@ BOOST_AUTO_TEST_CASE(script_standard_GetScriptFor_)
|
||||||
BOOST_CHECK(result == expected);
|
BOOST_CHECK(result == expected);
|
||||||
|
|
||||||
// PayToAnchor
|
// PayToAnchor
|
||||||
std::vector<unsigned char> anchor_bytes{0x4e, 0x73};
|
|
||||||
expected.clear();
|
expected.clear();
|
||||||
expected << OP_1 << anchor_bytes;
|
expected << OP_1 << ANCHOR_BYTES;
|
||||||
result = GetScriptForDestination(PayToAnchor());
|
result = GetScriptForDestination(PayToAnchor());
|
||||||
BOOST_CHECK(result == expected);
|
BOOST_CHECK(result == expected);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1040,7 +1040,7 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check anchor outputs
|
// Check anchor outputs
|
||||||
t.vout[0].scriptPubKey = CScript() << OP_1 << std::vector<unsigned char>{0x4e, 0x73};
|
t.vout[0].scriptPubKey = CScript() << OP_1 << ANCHOR_BYTES;
|
||||||
BOOST_CHECK(t.vout[0].scriptPubKey.IsPayToAnchor());
|
BOOST_CHECK(t.vout[0].scriptPubKey.IsPayToAnchor());
|
||||||
t.vout[0].nValue = 240;
|
t.vout[0].nValue = 240;
|
||||||
CheckIsStandard(t);
|
CheckIsStandard(t);
|
||||||
|
|
Loading…
Add table
Reference in a new issue