Changeset View
Changeset View
Standalone View
Standalone View
src/script/descriptor.cpp
Show First 20 Lines • Show All 504 Lines • ▼ Show 20 Lines | |||||
/** A parsed pkh(P) descriptor. */ | /** A parsed pkh(P) descriptor. */ | ||||
class PKHDescriptor final : public DescriptorImpl { | class PKHDescriptor final : public DescriptorImpl { | ||||
protected: | protected: | ||||
std::vector<CScript> MakeScripts(const std::vector<CPubKey> &keys, | std::vector<CScript> MakeScripts(const std::vector<CPubKey> &keys, | ||||
const CScript *, | const CScript *, | ||||
FlatSigningProvider &out) const override { | FlatSigningProvider &out) const override { | ||||
CKeyID id = keys[0].GetID(); | CKeyID id = keys[0].GetID(); | ||||
out.pubkeys.emplace(id, keys[0]); | out.pubkeys.emplace(id, keys[0]); | ||||
return Singleton(GetScriptForDestination(id)); | return Singleton(GetScriptForDestination(PKHash(id))); | ||||
} | } | ||||
public: | public: | ||||
PKHDescriptor(std::unique_ptr<PubkeyProvider> prov) | PKHDescriptor(std::unique_ptr<PubkeyProvider> prov) | ||||
: DescriptorImpl(Singleton(std::move(prov)), {}, "pkh") {} | : DescriptorImpl(Singleton(std::move(prov)), {}, "pkh") {} | ||||
}; | }; | ||||
/** A parsed combo(P) descriptor. */ | /** A parsed combo(P) descriptor. */ | ||||
class ComboDescriptor final : public DescriptorImpl { | class ComboDescriptor final : public DescriptorImpl { | ||||
protected: | protected: | ||||
std::vector<CScript> MakeScripts(const std::vector<CPubKey> &keys, | std::vector<CScript> MakeScripts(const std::vector<CPubKey> &keys, | ||||
const CScript *, | const CScript *, | ||||
FlatSigningProvider &out) const override { | FlatSigningProvider &out) const override { | ||||
std::vector<CScript> ret; | std::vector<CScript> ret; | ||||
CKeyID id = keys[0].GetID(); | CKeyID id = keys[0].GetID(); | ||||
out.pubkeys.emplace(id, keys[0]); | out.pubkeys.emplace(id, keys[0]); | ||||
// P2PK | // P2PK | ||||
ret.emplace_back(GetScriptForRawPubKey(keys[0])); | ret.emplace_back(GetScriptForRawPubKey(keys[0])); | ||||
// P2PKH | // P2PKH | ||||
ret.emplace_back(GetScriptForDestination(id)); | ret.emplace_back(GetScriptForDestination(PKHash(id))); | ||||
return ret; | return ret; | ||||
} | } | ||||
public: | public: | ||||
ComboDescriptor(std::unique_ptr<PubkeyProvider> prov) | ComboDescriptor(std::unique_ptr<PubkeyProvider> prov) | ||||
: DescriptorImpl(Singleton(std::move(prov)), {}, "combo") {} | : DescriptorImpl(Singleton(std::move(prov)), {}, "combo") {} | ||||
}; | }; | ||||
Show All 19 Lines | |||||
}; | }; | ||||
/** A parsed sh(...) descriptor. */ | /** A parsed sh(...) descriptor. */ | ||||
class SHDescriptor final : public DescriptorImpl { | class SHDescriptor final : public DescriptorImpl { | ||||
protected: | protected: | ||||
std::vector<CScript> MakeScripts(const std::vector<CPubKey> &, | std::vector<CScript> MakeScripts(const std::vector<CPubKey> &, | ||||
const CScript *script, | const CScript *script, | ||||
FlatSigningProvider &) const override { | FlatSigningProvider &) const override { | ||||
return Singleton(GetScriptForDestination(CScriptID(*script))); | return Singleton(GetScriptForDestination(ScriptHash(*script))); | ||||
} | } | ||||
public: | public: | ||||
SHDescriptor(std::unique_ptr<DescriptorImpl> desc) | SHDescriptor(std::unique_ptr<DescriptorImpl> desc) | ||||
: DescriptorImpl({}, std::move(desc), "sh") {} | : DescriptorImpl({}, std::move(desc), "sh") {} | ||||
}; | }; | ||||
//////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////// | ||||
▲ Show 20 Lines • Show All 353 Lines • Show Last 20 Lines |