coinbase_ordinals = list(range(first, last)) for transaction in block.transactions[1:]: ordinals = [] for input in transaction.inputs: ordinals.extend(input.ordinals) for output in transaction.outputs: output.ordinals = ordinals[:output.value] del ordinals[:output.value] coinbase_ordinals.extend(ordinals) for output in block.transaction[0].outputs: output.ordinals = coinbase_ordinals[:output.value] del coinbase_ordinals[:output.value] === Terminology and Notation === A satpoint may be used to indicate the location of a sat within an output. A satpoint consists of an outpoint, i.e., a transaction ID and output index, with the addition of the offset of the ordinal within that output. For example, if the sat in question is at offset 6 in the first output of a transaction, its satpoint is: `680df1e4d43016571e504b0b142ee43c5c0b83398a97bdcfd94ea6f287322d22:0:6` == Discussion == === Rationale === Ordinal numbers are designed to be orthogonal to other aspects of the Bitcoin