An address is a unique identifier that takes the role of the originator and/or the destination of any given transaction. Technically, an address corresponds to the Base58 encoded cryptographic hash of a public key. An address’s associated Bitcoin balance can be zero or positive, ranging from the smallest unit of 1 Satoshi (10-8 Bitcoin) to 21 million BTCs, the maximum amount of Bitcoins that can be created according to the current consensus protocol. Typically, Bitcoin addresses start with the decimal 1, or 3 (for multisignature addresses), and typically range from 26 to 35 characters. An example of a Bitcoin address is 1L78r1WnEZ73QNmQviecrnyrWrnqRhWNLy.
A transaction is a data structure that can take one or more inputs and outputs (see Figure 3.2). An input redeems the BTCs that are referenced in a former transaction output. Transactions therefore effectively form a chain of transactions, and BTCs are technically only kept in transactions’ outputs, not within addresses.
A transaction output specifies how many BTCs it contains as well as under which conditions a subsequent transaction can redeem the output. The subsequent transaction redeems the output of a former transaction by encoding the necessary spending information in a transaction input. The conditions under which an output can be spent are encoded with the help of scripts, and only the participants that are able to provide the correct input to the script, such that it evaluates to true upon execution, are allowed to spend the BTCs output by a given Bitcoin transaction.
Figure 3.2 depicts a simplified transaction with one input and two outputs. In this example, the transaction spends w BTCs to address X and x BTCs to address Y. The outputs that have not yet been spent (i.e., the two outputs of transaction 2 in Figure 3.3), are commonly referred to as unspent transaction outputs (UTXO).
Table 3.1 summarizes the general format of a Bitcoin transaction. Tables 3.2 and 3.3, respectively, describe the transaction input and output format.