user86501: I'd like to parse the blockchain in order to produce a list of all addresses that are mentioned in the blockchain.
I'd like to do this with a program, language agnostic.

user60443: Addresses aren't mentioned in the blockchain. But you can calculate them based on the transaction scripts. In order to do this, you need to calculate the address from the scriptPubkey of each transaction. To calculate the address you have to:

Determine whether it is a P2PKH or P2SH, so you know what prefix to use: List of address prefixes.
Calculate the BASE58CHECK(HASH160(<prefix><scriptPubKey>))


86501: <p>I'd like to parse the blockchain in order to produce a list of all addresses that are mentioned in the blockchain.</p>

<p>I'd like to do this with a program, language agnostic.</p>
 60443: <p>Addresses aren't mentioned in the blockchain. But you can calculate them based on the transaction scripts. In order to do this, you need to calculate the address from the <a href="https://en.bitcoin.it/wiki/Transaction#General_format_.28inside_a_block.29_of_each_output_of_a_transaction_-_Txout" rel="nofollow noreferrer"><code>scriptPubkey</code></a> of each transaction. To calculate the address you have to:</p>

<ol>
<li>Determine whether it is a <a href="https://en.bitcoin.it/wiki/Transaction#General_format_.28inside_a_block.29_of_each_output_of_a_transaction_-_Txout" rel="nofollow noreferrer"><code>P2PKH</code></a> or <a href="https://en.bitcoin.it/wiki/Transaction#General_format_.28inside_a_block.29_of_each_output_of_a_transaction_-_Txout" rel="nofollow noreferrer"><code>P2SH</code></a>, so you know what prefix to use: <a href="https://en.bitcoin.it/wiki/List_of_address_prefixes" rel="nofollow noreferrer">List of address prefixes</a>.</li>
<li>Calculate the <code>BASE58CHECK(HASH160(&lt;prefix&gt;&lt;scriptPubKey&gt;))</code></li>
</ol>
