When I want to spend a UTXO, I need to and only need to provide the scriptSig (or input script, or unlock script). In another word, the scriptPubKey (or output script, or lock script) of a UTXO simply defines the way to unlock this UTXO. And it doesn't have to consist of someone's pubkey hash (the RIPEMD160 hash). I can even define the scriptPubkey as follows: anyone that finds the original content that can be hashed to 0123456789abcdef can spend this UTXO. In this case, there's actually no receiver address.

So is there really such a thing called "Bitcoin address"? Or is the "Bitcoin address" only inferred based on the content of scriptPubKey? Since most P2PKH, P2SH, P2WPKH, P2WSH, P2TR transactions use a fairly standard form of scriptPubKey.

1 Answer 1


Addresses do not exist on chain, and at the protocol level even nothing equivalent to an address balance exists. All that exists are UTXOs created by transactions, which carry a scriptPubKey.

Addresses are merely instructions for sender wallets to construct the scriptPubKey of outputs in order to pay the receiver. While it's currently generally possible to infer the used address back from the scriptPubKey, this is really backwards, and not something that will work with e.g. silent payment addresses.

  • Thanks for asnwering! So the addresses shown in the Bitcoin explorer are inferred from the scriptPubKey, right?
    – Yan
    Commented May 24 at 11:36
  • 2
    Indeed, and that inference process only works for the current typical address formats. In fact, many (older) explorers show a P2PKH address even when the scriptPubKey is actually P2PK, for historical reasons. Commented May 24 at 11:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.