| 1368 | protected: |
| 1369 | std::string ToStringExtra() const override { return strprintf("%i", m_threshold); } |
| 1370 | std::vector<CScript> MakeScripts(const std::vector<CPubKey>& keys, std::span<const CScript>, FlatSigningProvider&) const override { |
| 1371 | CScript ret; |
| 1372 | std::vector<XOnlyPubKey> xkeys; |
| 1373 | xkeys.reserve(keys.size()); |
| 1374 | for (const auto& key : keys) xkeys.emplace_back(key); |
| 1375 | if (m_sorted) std::sort(xkeys.begin(), xkeys.end()); |
| 1376 | ret << ToByteVector(xkeys[0]) << OP_CHECKSIG; |
| 1377 | for (size_t i = 1; i < keys.size(); ++i) { |
| 1378 | ret << ToByteVector(xkeys[i]) << OP_CHECKSIGADD; |
| 1379 | } |
| 1380 | ret << m_threshold << OP_NUMEQUAL; |
| 1381 | return Vector(std::move(ret)); |
| 1382 | } |
| 1383 | public: |
| 1384 | MultiADescriptor(int threshold, std::vector<std::unique_ptr<PubkeyProvider>> providers, bool sorted = false) : DescriptorImpl(std::move(providers), sorted ? "sortedmulti_a" : "multi_a"), m_threshold(threshold), m_sorted(sorted) {} |
| 1385 | bool IsSingleType() const final { return true; } |
nothing calls this directly
no test coverage detected