2017 © Pedro Peláez
 

library decred-php-api

PHP API for the Decred Cryptocurrency

image

decred/decred-php-api

PHP API for the Decred Cryptocurrency

  • Monday, March 12, 2018
  • by decred
  • Repository
  • 6 Watchers
  • 5 Stars
  • 45 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 2 Forks
  • 1 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Decred PHP API

Build Status ISC License , (*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);

The Versions