<p>Full instruction based on response of @Farghaly: <strong>Ubuntu 16</strong></p>

<p>Install dependencies</p>

<pre><code>sudo apt-get install php-bcmath php-gmp
composer require bitwasp/bitcoin
</code></pre>

<p>And then in fiel <code>app.php</code></p>

<pre><code>&lt;?php
require 'vendor/autoload.php';

use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Address;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;

$network = Bitcoin::getNetwork();

$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey-&gt;getPublicKey();
$address = $publicKey-&gt;getAddress();
</code></pre>

CC BY-SA 4.0
2021-12-11T21:50:43.263Z
vendor/autoload.php
where can i find this file?
makasci
CC BY-SA 4.0
2021-12-12T01:19:21.220Z
@makasci I believe it is automatically generated by composer when you run `composer install`
meshcollider
CC BY-SA 3.0
2017-05-16T07:01:30.130Z
2017-05-16T07:01:30.130Z
Daniel
<p>Use BitWasp Bitcoin-php library
<a href="https://github.com/Bit-Wasp/bitcoin-php" rel="nofollow noreferrer">https://github.com/Bit-Wasp/bitcoin-php</a></p>

<pre><code>&lt;?php
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;

$network = Bitcoin::getNetwork();
$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey-&gt;getPublicKey();
$address = $publicKey-&gt;getAddress(); // returns AddressInterface
echo $address-&gt;getAddress($network); // prints address for $network as string
</code></pre>

<p>If you want to create Bitcoin address from Public key string <a href="https://github.com/Bit-Wasp/bitcoin-php/tree/master/doc" rel="nofollow noreferrer">check documentation</a> for <strong>Factory classes</strong></p>

<p>or newer versions:</p>

<pre><code>&lt;?php
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Address\AddressCreator;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;
use BitWasp\Bitcoin\Key\KeyToScript\Factory\P2pkhScriptDataFactory; 

$network = Bitcoin::getNetwork();
$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey-&gt;getPublicKey();

$addrCreator = new AddressCreator();
$factory = new P2pkhScriptDataFactory();
$scriptPubKey = $factory-&gt;convertKey($publicKey)-&gt;getScriptPubKey();
$address = $addrCreator-&gt;fromOutputScript($scriptPubKey); // returns AddressInterface
echo $address-&gt;getAddress($network); // prints address for $network as string
</code></pre>

CC BY-SA 4.0
2018-06-24T12:10:51.733Z
This answer still uses a private key and is not purely public key based, like asked for.
Wouter
CC BY-SA 4.0
2019-05-16T14:46:13.027Z
You can do PublicKeyFactory::fromHex and avoid using a private key.
For newer versions, getAddress was removed, see this example https://github.com/Bit-Wasp/bitcoin-php/blob/9e535f04665ba22ba2b8b63f371ec50d2e7eabb8/examples/addresstypes.script.php#L16-18
karimkorun
CC BY-SA 4.0
2016-08-14T10:30:27.617Z
2019-06-23T18:53:00.133Z
2019-06-23T18:53:00.133Z
Farghaly
<p>I need some PHP code to generate bitcoin addresses from a given public key.</p>

<p>I can only find algorithms to generate addresses from the master private key but according to <a href="https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses" rel="noreferrer">https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses</a>
the private key is not required at all.</p>

<address><php><address-generation>
How to generate addresses in PHP
Gianluca Ghettini
# How to generate addresses in PHP

(Asked by: username_0 on 2016-08-14)

I need some PHP code to generate bitcoin addresses from a given public key.

I can only find algorithms to generate addresses from the master private key but according to <https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses>
the private key is not required at all.

**Tags:** address, php, address-generation


---

## 2 answers

### Answer by username_4 on 2016-08-14. Score: 8 | Accepted answer

Use BitWasp Bitcoin-php library
<https://github.com/Bit-Wasp/bitcoin-php>

```
<?php
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;

$network = Bitcoin::getNetwork();
$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey->getPublicKey();
$address = $publicKey->getAddress(); // returns AddressInterface
echo $address->getAddress($network); // prints address for $network as string

```

If you want to create Bitcoin address from Public key string [check documentation](https://github.com/Bit-Wasp/bitcoin-php/tree/master/doc) for **Factory classes**

or newer versions:

```
<?php
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Address\AddressCreator;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;
use BitWasp\Bitcoin\Key\KeyToScript\Factory\P2pkhScriptDataFactory; 

$network = Bitcoin::getNetwork();
$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey->getPublicKey();

$addrCreator = new AddressCreator();
$factory = new P2pkhScriptDataFactory();
$scriptPubKey = $factory->convertKey($publicKey)->getScriptPubKey();
$address = $addrCreator->fromOutputScript($scriptPubKey); // returns AddressInterface
echo $address->getAddress($network); // prints address for $network as string

```

> **Comments:**
> **username_5**: This answer still uses a private key and is not purely public key based, like asked for.  
> **username_6**: You can do PublicKeyFactory::fromHex and avoid using a private key. For newer versions, getAddress was removed, see this example https://github.com/Bit-Wasp/bitcoin-php/blob/9e535f04665ba22ba2b8b63f371ec50d2e7eabb8/examples/addresstypes.script.php#L16-18  

---

### Answer by username_1 on 2017-05-16. Score: 2

Full instruction based on response of @username_4: **Ubuntu 16**

Install dependencies

```
sudo apt-get install php-bcmath php-gmp
composer require bitwasp/bitcoin

```

And then in fiel `app.php`

```
<?php
require 'vendor/autoload.php';

use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Address;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;

$network = Bitcoin::getNetwork();

$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey->getPublicKey();
$address = $publicKey->getAddress();

```

> **Comments:**
> **username_2**: vendor/autoload.php where can i find this file?  
> **username_3**: @username_2 I believe it is automatically generated by composer when you run `composer install`  

---

