Bitcoin
Enumerations | Functions
anonymous_namespace{ismine.cpp} Namespace Reference

Enumerations

enum  IsMineSigVersion { IsMineSigVersion::TOP = 0, IsMineSigVersion::P2SH = 1, IsMineSigVersion::WITNESS_V0 = 2 }
 
enum  IsMineResult { IsMineResult::NO = 0, IsMineResult::WATCH_ONLY = 1, IsMineResult::SPENDABLE = 2, IsMineResult::INVALID = 3 }
 

Functions

bool PermitsUncompressed (IsMineSigVersion sigversion)
 
bool HaveKeys (const std::vector< valtype > &pubkeys, const CWallet &keystore)
 
IsMineResult IsMineInner (const CWallet &keystore, const CScript &scriptPubKey, IsMineSigVersion sigversion)
 

Enumeration Type Documentation

◆ IsMineResult

enum anonymous_namespace{ismine.cpp}::IsMineResult
strong

This is an internal representation of isminetype + invalidity. Its order is significant, as we return the max of all explored possibilities.

Enumerator
NO 

Not ours.

WATCH_ONLY 

Included in watch-only balance.

SPENDABLE 

Included in all balances.

INVALID 

Not spendable by anyone (uncompressed pubkey in segwit, P2SH inside P2SH or witness, witness inside witness)

◆ IsMineSigVersion

enum anonymous_namespace{ismine.cpp}::IsMineSigVersion
strong

This is an enum that tracks the execution context of a script, similar to SigVersion in script/interpreter. It is separate however because we want to distinguish between top-level scriptPubKey execution and P2SH redeemScript execution (a distinction that has no impact on consensus rules).

Enumerator
TOP 

scriptPubKey execution

P2SH 

P2SH redeemScript.

WITNESS_V0 

P2WSH witness script execution.

Function Documentation

◆ HaveKeys()

bool anonymous_namespace{ismine.cpp}::HaveKeys ( const std::vector< valtype > &  pubkeys,
const CWallet keystore 
)

◆ IsMineInner()

IsMineResult anonymous_namespace{ismine.cpp}::IsMineInner ( const CWallet keystore,
const CScript scriptPubKey,
IsMineSigVersion  sigversion 
)

◆ PermitsUncompressed()

bool anonymous_namespace{ismine.cpp}::PermitsUncompressed ( IsMineSigVersion  sigversion)