<p>The original Satoshi codebase used a programming style called &quot;Hungarian notation&quot;, where variable names are prefixed with letters that indicate the data type they contain.</p>
<p><code>v</code> in particular stands for &quot;vector&quot;. So <code>vin</code> and <code>vout</code> just mean &quot;in vector&quot; and &quot;out vector&quot;, and were (and are) the variable names for the inputs and outputs of a transaction.</p>
<p>In UTXOs, that name sort of got inherited, and &quot;vout index&quot; got abbreviated to vout in certain context.</p>

CC BY-SA 4.0
2023-01-06T04:43:11.050Z
Satoshi confirmed Hungarian.
Casey Rodarmor
CC BY-SA 4.0
2023-01-06T10:18:02.770Z
Obligatory rant about the fact that Hungarian notation was meant to be used on semantic types, not actual data types, but it was massively misunderstood by large swaths of managers. You don't need the variable name to tell you that you have a string, but it is nice to have the variable name tell you whether your string has, say, gone through input validation and sanitation and is therefore safe to send into backend machinery.
Arthur
CC BY-SA 4.0
2023-01-06T14:17:23.697Z
@Arthur Unless you hope that Satoshi reads your rant here, I don't think you need to convince anyone here. Bitcoin Core no longer uses Hungarian notation as a style.
Pieter Wuille
CC BY-SA 4.0
2023-01-06T01:38:40.303Z
2023-01-06T01:38:40.303Z
Pieter Wuille
<p>What does the <code>v</code> in <code>vin</code> and <code>vout</code> stand for? And is it an instance of a more general naming scheme?</p>

<bitcoin-core-development><transaction-input><output>
Why are transaction input and output indices called `vin` and `vout`?
Casey Rodarmor
# Why are transaction input and output indices called `vin` and `vout`?

(Asked by: username_0 on 2023-01-05)

What does the `v` in `vin` and `vout` stand for? And is it an instance of a more general naming scheme?

**Tags:** bitcoin-core-development, transaction-input, output


---

## 1 answers

### Answer by username_1 on 2023-01-06. Score: 11 | Accepted answer

The original Satoshi codebase used a programming style called "Hungarian notation", where variable names are prefixed with letters that indicate the data type they contain.

`v` in particular stands for "vector". So `vin` and `vout` just mean "in vector" and "out vector", and were (and are) the variable names for the inputs and outputs of a transaction.

In UTXOs, that name sort of got inherited, and "vout index" got abbreviated to vout in certain context.

> **Comments:**
> **username_0**: Satoshi confirmed Hungarian.  
> **username_2**: Obligatory rant about the fact that Hungarian notation was meant to be used on semantic types, not actual data types, but it was massively misunderstood by large swaths of managers. You don't need the variable name to tell you that you have a string, but it is nice to have the variable name tell you whether your string has, say, gone through input validation and sanitation and is therefore safe to send into backend machinery.  
> **username_1**: @username_2 Unless you hope that Satoshi reads your rant here, I don't think you need to convince anyone here. Bitcoin Core no longer uses Hungarian notation as a style.  

---

