Decred PHP API
, (*1)
PHP API for the Decred Cryptocurrency, (*2)
Installation
Add composer package to your project, (*3)
composer require decred/decred-php-api
Make sure GMP PHP extesion is installed. In ubuntu:, (*4)
sudo apt install php7.0-gmp
From repository
You also can clone git package with, (*5)
git clone https://github.com/decred/decred-php-api.git
But still you will need to fetch library dependencies with composer., (*6)
composer install --no-dev
Don't forget to include composer autoloader., (*7)
include __DIR__.'/../vendor/autoload.php';
Usage examples
Library have wide functionality, so you could find usage examples in examples
library or looking into PHPUnit tests., (*8)
Generating seed
First of all we need to get Network intance to start working with library., (*9)
$testnet = \Decred\TestNet::instance();
And mainnet accordingly, (*10)
$mainnet = \Decred\MainNet::instance();
Now lets generate a seed, that will be also verified for usage on testnet.
Defaut account and branch address will be derivded to verify the seed., (*11)
$seed = \Decred\Crypto\ExtendedKey::generateSeed($testnet);
HD Wallets
When we have usable seed we can create HD master key., (*12)
$master = \Decred\Crypto\ExtendedKey::newMaster($seed, $testnet);
newMaster
method will return ExtendedKey
object, that have variant API for working with HD wallets., (*13)
ExtendedKey::privateChildKey($index)
Derives HD private child key from parent HD private key, returns ExtendedKey
object., (*14)
ExtendedKey::hardenedChildKey($index)
Derives HD hardened child key from parent HD private key, returns ExtendedKey
object., (*15)
Can't be dervied from HD public key., (*16)
ExtendedKey::publicChildKey($index)
Derives HD public child key from parent HD private or public key, returns ExtendedKey
object., (*17)
ExtendedKey::neuter
Verify that extended key is public, returns ExtendedKey
object., (*18)
Default account
Using this basic methods we can derive default account HD private and public keys accourding to BIP44., (*19)
HD path (m\44'\42'0'), (*20)
$defaultAccountPrivateKey = $master
->hardenedChildKey(44)
->hardenedChildKey(42)
->hardenedChildKey(0);
$defaultAccountPublicKey = $master->neuter();
ExtendedKey
implements __toString()
method, so you can easily get Base58 representation of HD key., (*21)
echo sprintf("Default account HD private key: %s\n", $defaultAccountPrivateKey);
echo sprintf("Default account HD public key: %s\n", $defaultAccountPublicKey);
From default account we can derive 0 branch and 0 index and the get default address., (*22)
$defaultAddress = $defaultAccountPublicKey
->publicChildKey(0)
->publicChildKey(0)
->getAddress();
echo sprintf("Default address: %s\n", $defaultAddress);