by Vincent Menard

2018-06-01 18:15:28


We recently started a new library for php implementation of the Bitcoin BIPS articles, an early version was released yesterday on Github. While most of the web integration of bitcoin wallets are done and present all over Github, we intends to simply implement the ongoing improvements. The BIPS (Bitcoin Improvements Papers) are technical propositions made by the users to improvement various aspects of the Bitcoin technology.


We started our phpbips library with Bip32, a method to create Bitcoin wallet child keys using a derivation method of the wallet ECC key (Elliptic Curve Cryptography). More work on other Bips will soon be included to the library once the work on Bip32 is considered completed. We find very interesting that the work on Bitcoin Bips is still very active and can lead to further applications in younger crypto currencies.

Our phpbips library is based on Matyas Danter work, making heavy use of his phpecc library. We tried to follow two fundamental principles in articulation of our work in phpbips:

The first one being that crypto currency specifics has to be separated from the Bip components. In that manner, we created base entities, providing the necessary properties needed for the encryption methods chosen by the crypto currency. The default values of the base components are Bitcoin specifics (secp256k1 curves) but could easily be changed since services are available for each configuration (key prefixes, ECC arlgorithmic choices, etc).

The second principle reside is the fact each Bip is independent. There is no interdependence allowed between Bip classes. If work on a Bip instance requires the result of an other Bip or a third party library, it has to be either injected or generated by a base component. We intend to keep phpecc the only requirement for this library.

With those two principles in mind, it follows that base component will have to provide most of the the ECDSA functionalities. We know it represents a tremendous work but are sure the rewards of those simple guidelines will facilitate the integrations into other software (ours for instance). We will surely make good use of this library in the AIFS project.