<p>in general: I have added a sample tx, which explains the details:</p>

<pre><code>VERSION
 01000000     
TX_IN COUNT [var_int]: hex=02, decimal=2
 TX_IN[0]
  TX_IN[0] OutPoint hash (char[32])
  BC8361DEC060BFE1D481BDA60B3127524B8FF65F307221DE105E9DDB3F3B6053
</code></pre>

<p>--> this is the previous tx, which contains funds to move</p>

<pre><code>  TX_IN[0] OutPoint index (uint32_t)
  hex=01000000, reversed=00000001, decimal=1
  TX_IN[0] Script Length (var_int)
  hex=6A, decimal=106
  TX_IN[0] Script Sig (uchar[])
  4730440220128487F04A591C43D7A6556FFF9158999B46D6119C1A4D4CF1F5D0AC1DD57A94022061556761E9E1B1E656C0A70AA7B3E83454CD61662DF61EBDC31E43196B5E0C10012102B12126A716CE7BBB84703BCFBF0AFA80283C75A7304A48CD311A5027EFD906C2 
</code></pre>

<p>--> this script has the signature, and the following public key (starting with 02B12126...) - this is where the funds were signed with, and would be the source address (you would need to convert the pub key first to the bitcoin address - see references in my comments)</p>

<pre><code>  TX_IN[0] Sequence (uint32_t)
  FFFFFFFF
</code></pre>

<p>--> and here follows a second input, from which this transaction moves funds... same rules as before.</p>

<pre><code> TX_IN[1]
  TX_IN[1] OutPoint hash (char[32])
  A75B4B6369ABC4A5F0A95FF714460BFA33802A2C422FD06D7B28771570C4520E
  TX_IN[1] OutPoint index (uint32_t)
  hex=00000000, reversed=00000000, decimal=0
  TX_IN[1] Script Length (var_int)
  hex=6B, decimal=107
  TX_IN[1] Script Sig (uchar[])
  483045022100A428348FF55B2B59BC55DDACB1A00F4ECDABE282707BA5185D39FE9CDF05D7F0022074232DAE76965B6311CEA2D9E5708A0F137F4EA2B0E36D0818450C67C9BA259D0121025F95E8A33556E9D7311FA748E9434B333A4ECFB590C773480A196DEAB0DEDEE1 
  TX_IN[1] Sequence (uint32_t)
  FFFFFFFF
</code></pre>

<p>and here follow the outputs...</p>

<pre><code>TX_OUT COUNT, hex=02, decimal=2
 TX_OUT[0]
  TX_OUT[0] Value (uint64_t)
  hex=9025730000000000, reversed_hex=0000000000732590, dec=7546256, bitcoin=0.07546256
  TX_OUT[0] PK_Script Length (var_int)
  hex=19, dec=25
  TX_OUT[0] pk_script (uchar[])
  76A914FCA68658B537382E27A85522D292E1AD9543FE0488AC
</code></pre>

<p>--> this pk_script defines the conditions, under which the funds can be spend. It is encoded in bitcoin's script language, and would finally translate to an address: 1Q2tmgphDqFJxhFFYNrjBr5o8XKSSDKtXv</p>

<pre><code> TX_OUT[1]
  TX_OUT[1] Value (uint64_t)
  hex=9838110000000000, reversed_hex=0000000000113898, dec=1128600, bitcoin=0.01128600
  TX_OUT[1] PK_Script Length (var_int)
  hex=19, dec=25
  TX_OUT[1] pk_script (uchar[])
  76A9146AF1D17462C6146A8A61217E8648903ACD3335F188AC
</code></pre>

<p>and this is a second script (usually a return address), which translates here to: 1AkUKA3NNQt4gs3GGexhacnkSMcmYHsN3S</p>

<pre><code> LOCK_TIME
00000000
</code></pre>

<p>Hope this helps, as mentioned before, Ken Shirrifs link is probably best to quickly follow. </p>

CC BY-SA 3.0
2018-01-06T23:03:44.450Z
2018-01-06T23:03:44.450Z
pebwindkraft
<p>Can someone post an explanation of how to find the source and destination addresses of a transaction from the input/output portions of a block?</p>

CC BY-SA 3.0
2018-01-06T22:07:38.060Z
From input script? you mean just like that:

ScriptSig: PUSHDATA(72)[3045022100f4427952c78e1dc5108bc57a101a53f766706ee08fa99c24ec17f05d06e66ffb02201e826952e13a3042b6599bcfc921ad14504e08cf05f19f82eb8d1111e56ee1a701] PUSHDATA(33)[0236371dd8c40e66849d7fda6f78645ca0222798de7d1f3df8d1af78eb114d719b]
Tailer
CC BY-SA 3.0
2018-01-06T22:53:01.497Z
hmm, Bitcoin? Altcoin? from input/output portion of a block? In Bitcoin a block contains transactions, and these transactions move coins from one address to another. Besides bitcoin.org and of course Andreas book "Mastering Bitcoin", this here is maybe the shortest way: 
http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html? Otherwise you may need to rephrase your question, so we can find the right answer / approach...
pebwindkraft
CC BY-SA 3.0
2018-01-06T22:54:52.540Z
@pebwindkraft Thanks for the response! I guess I'm trying to figure out where the source and destination addresses are stored in a transaction? Does that make sense?
mdornfe1
<blockchain><raw-data>
Can someone post an explanation of how to get the input/output addresses?
mdornfe1
# Can someone post an explanation of how to get the input/output addresses?

(Asked by: username_0 on 2018-01-06)

Can someone post an explanation of how to find the source and destination addresses of a transaction from the input/output portions of a block?

**Tags:** blockchain, raw-data

> **Comments:**
> **username_1**: From input script? you mean just like that:  ScriptSig: PUSHDATA(72)[3045022100f4427952c78e1dc5108bc57a101a53f766706ee08fa99c24ec17f05d06e66ffb02201e826952e13a3042b6599bcfc921ad14504e08cf05f19f82eb8d1111e56ee1a701] PUSHDATA(33)[0236371dd8c40e66849d7fda6f78645ca0222798de7d1f3df8d1af78eb114d719b]  
> **username_2**: hmm, Bitcoin? Altcoin? from input/output portion of a block? In Bitcoin a block contains transactions, and these transactions move coins from one address to another. Besides bitcoin.org and of course Andreas book "Mastering Bitcoin", this here is maybe the shortest way:  http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html? Otherwise you may need to rephrase your question, so we can find the right answer / approach...  
> **username_0**: @username_2 Thanks for the response! I guess I'm trying to figure out where the source and destination addresses are stored in a transaction? Does that make sense?  

---

## 1 answers

### Answer by username_2 on 2018-01-06. Score: 1

in general: I have added a sample tx, which explains the details:

```
VERSION
 01000000     
TX_IN COUNT [var_int]: hex=02, decimal=2
 TX_IN[0]
  TX_IN[0] OutPoint hash (char[32])
  BC8361DEC060BFE1D481BDA60B3127524B8FF65F307221DE105E9DDB3F3B6053

```

--> this is the previous tx, which contains funds to move

```
  TX_IN[0] OutPoint index (uint32_t)
  hex=01000000, reversed=00000001, decimal=1
  TX_IN[0] Script Length (var_int)
  hex=6A, decimal=106
  TX_IN[0] Script Sig (uchar[])
  4730440220128487F04A591C43D7A6556FFF9158999B46D6119C1A4D4CF1F5D0AC1DD57A94022061556761E9E1B1E656C0A70AA7B3E83454CD61662DF61EBDC31E43196B5E0C10012102B12126A716CE7BBB84703BCFBF0AFA80283C75A7304A48CD311A5027EFD906C2 

```

--> this script has the signature, and the following public key (starting with 02B12126...) - this is where the funds were signed with, and would be the source address (you would need to convert the pub key first to the bitcoin address - see references in my comments)

```
  TX_IN[0] Sequence (uint32_t)
  FFFFFFFF

```

--> and here follows a second input, from which this transaction moves funds... same rules as before.

```
 TX_IN[1]
  TX_IN[1] OutPoint hash (char[32])
  A75B4B6369ABC4A5F0A95FF714460BFA33802A2C422FD06D7B28771570C4520E
  TX_IN[1] OutPoint index (uint32_t)
  hex=00000000, reversed=00000000, decimal=0
  TX_IN[1] Script Length (var_int)
  hex=6B, decimal=107
  TX_IN[1] Script Sig (uchar[])
  483045022100A428348FF55B2B59BC55DDACB1A00F4ECDABE282707BA5185D39FE9CDF05D7F0022074232DAE76965B6311CEA2D9E5708A0F137F4EA2B0E36D0818450C67C9BA259D0121025F95E8A33556E9D7311FA748E9434B333A4ECFB590C773480A196DEAB0DEDEE1 
  TX_IN[1] Sequence (uint32_t)
  FFFFFFFF

```

and here follow the outputs...

```
TX_OUT COUNT, hex=02, decimal=2
 TX_OUT[0]
  TX_OUT[0] Value (uint64_t)
  hex=9025730000000000, reversed_hex=0000000000732590, dec=7546256, bitcoin=0.07546256
  TX_OUT[0] PK_Script Length (var_int)
  hex=19, dec=25
  TX_OUT[0] pk_script (uchar[])
  76A914FCA68658B537382E27A85522D292E1AD9543FE0488AC

```

--> this pk\_script defines the conditions, under which the funds can be spend. It is encoded in bitcoin's script language, and would finally translate to an address: 1Q2tmgphDqFJxhFFYNrjBr5o8XKSSDKtXv

```
 TX_OUT[1]
  TX_OUT[1] Value (uint64_t)
  hex=9838110000000000, reversed_hex=0000000000113898, dec=1128600, bitcoin=0.01128600
  TX_OUT[1] PK_Script Length (var_int)
  hex=19, dec=25
  TX_OUT[1] pk_script (uchar[])
  76A9146AF1D17462C6146A8A61217E8648903ACD3335F188AC

```

and this is a second script (usually a return address), which translates here to: 1AkUKA3NNQt4gs3GGexhacnkSMcmYHsN3S

```
 LOCK_TIME
00000000

```

Hope this helps, as mentioned before, Ken Shirrifs link is probably best to quickly follow.


---

