I found the name m_script_arg to be confusing while reviewing #14646 (review). @sipa let me know if m_subdescriptor_arg is completely wrong.
I also added an explanation of why we call GetPubKey when we don’t ask it for a public key.
I found the name m_script_arg to be confusing while reviewing #14646 (review). @sipa let me know if m_subdescriptor_arg is completely wrong.
I also added an explanation of why we call GetPubKey when we don’t ask it for a public key.
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
No conflicts as of last run.
294@@ -295,6 +295,8 @@ class DescriptorImpl : public Descriptor
295 // Construct temporary data in `entries` and `subscripts`, to avoid producing output in case of failure.
296 for (const auto& p : m_pubkey_args) {
297 entries.emplace_back();
298+ // If we have a cache, GetPubKey should not actually return a public key,
299+ // so we pass a nullprt. We're only interested in uncached origin info.
nullprt
m_script_arg refers to the defined SCRIPT in the descriptor doc, to make it distinct from KEY or ADDR. But subdescriptor is also a clear name so I have no strong preference either way.
294@@ -295,6 +295,8 @@ class DescriptorImpl : public Descriptor
295 // Construct temporary data in `entries` and `subscripts`, to avoid producing output in case of failure.
296 for (const auto& p : m_pubkey_args) {
297 entries.emplace_back();
298+ // If we have a cache, GetPubKey should not actually return a public key,
“should not” sounds like it should be prohibited from computing the pubkey.
What about “If we have a cache, we don’t need GetPubKey to compute the public key. Pass in nullptr to signify only origin info is desired.”.
-BEGIN VERIFY SCRIPT-
sed -i -e 's/m_script_arg/m_subdescriptor_arg/g' src/script/descriptor.cpp
-END VERIFY SCRIPT-
Rebased.
@MeshCollider I added a comment referencing SCRIPT in the descriptor docs.
By the way, I noticed that neither DescriptorImpl nor m_subdescriptor_arg show up in the docs, not even in the docs for script/descriptor.cpp. I don’t understand Doxygen well enough to know if that’s a feature (i.e. because these functions are private).
Plus a few typo fixes.
bitcoind binary built with this patch applied is identical to a disassembly of the bitcoind binary built against master (as expected).